keepalived+nginx实现高可用负载均衡部署

来源:互联网 发布:sql连表update 编辑:程序博客网 时间:2024/06/16 00:16

最近有个项目用到高可用,软件负载部署,此文描述如何用keepalived+nginx实现高可用负载均衡。


      keepalived是很好用的双机热备(HA)软件,nginx用做负载均衡,网上案例也很多,这里就不介绍了。


  运行原理

keepalived通过选举(看服务器设置的权重)挑选出一台热备服务器做MASTER机器,MASTER机器会被分配到一个指定的虚拟ip,外部程序可通过该ip访问这台服务器,如果这台服务器出现故障(断网,重启,或者本机器上的keepalived crash等),keepalived会从其他的备份机器上重选(还是看服务器设置的权重)一台机器做MASTER并分配同样的虚拟IP,充当前一台MASTER的角色。


服务器清单


主服务器 95 上部署Nginx +keepalived

备服务器89上部署Nginx +keepalived

在95 94服务器上新建不同端口的tocmat


部署结构图


一.配置nginx

    安装nginx后,进入conf。找到nginx.conf, 配置如下

#user  nobody;

worker_processes  1;

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {

    worker_connections  1024;

}

 

http {

    include       mime.types;

    default_type  application/octet-stream;

 

    sendfile        on;

    #tcp_nopush     on;

    #keepalive_timeout  0;

    keepalive_timeout  65;

    

    #gzip  on;

    

 

#正式上线的负载均衡配置

   upstream product {

     #默认是轮询

     #least_conn;#最少连接

     #ip_hash;#按ip分配

      

     server xx.xx.190.94:8081 weight=2;#按权重

     server xx.xx.190.94:7081 weight=2;

     server xx.xx.190.95:8081 weight=2;

     server xx.xx.190.95:7081 weight=2;

   }

#写入接口的测试

     upstream www.star.com {

     #默认是轮询

     #least_conn;#最少连接

     #ip_hash;#按ip分配

 

     server xx.xx.190.94:8081 weight=2;#按权重

     server xx.xx.190.94:7081 weight=2;

     server xx.xx.190.95:8059 weight=2;

     server xx.xx.190.95:7081 weight=2;

   }

    server {

        listen       8086;

        server_name  www.star.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        #location / {

        #   root   html;

        #     index  index.html index.htm;

        #}

        location / {

             proxy_pass http://www.star.com;

             proxy_redirect default;

        }

}

配置web服务器, upstream 可以配置多个,server_name填写upstream名,哪个就会被调用。


  


配置端口号,nginx端口不等于tomcat的端口,是一个没有被占用的端口,


二.配置keepalived

      安装keepalived后,进入95主服务器,cd /etc/keepalived/   ,vim keepalived.conf,配置如下



state 设置为MASTER

interface 设置为bond0,因为我服务器网卡是bond0,有些服务器网卡是eth。各位根据自己情况填写

priority 101   数值越大,优先级越高。数值一定要大于备机的配置,


配置监控脚本。

如果nignx没有查询到,表明nginx挂掉,直接杀掉keepalived进程

track_script {

Monitor_Nginx #(调用nginx进程检测脚本)

    }

脚本内容如下

#!/bin/bash

if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]

 then

 killall keepalived

Fi






接下来是配置虚拟IP地址,ip地址是本服务器同网段的未被暂用的IP地址。

 virtual_ipaddress {

xx.xx.190.105 #(VRRP HA虚拟地址)

    }


这样我们就是配置完成了,备机配置和主机一样,除了优先级和状态,配置如下



到这里我们就配置完成。


三.启动服务,测试

    进入nginx安装目录bin,执行

启动

./nginx

重启

./nginx -s reload


快速停止

./nginx -s stop 

可以用ps -ef|grep nginx  查看是否启动成功,或者进入logs下,查看日志


启动keepalived

service keepalived restart


查看keepalived日志

tail -f /var/log/messages


都启动成功后,查看本服务器是否绑定VIP105

查看当前keepalived是否绑定VIP

命令    ip addr  list


这里能看到,95服务器已经绑定了105VIP地址了,同理,启动备机的服务。


xx.xx190.105:8086/xxxxxx就可以访问了。

到这里就介绍完了,感兴趣的同学可以自己测试主备切换效果。










0 0
原创粉丝点击