keepalived+nginx主从配置

来源:互联网 发布:手机放线软件 编辑:程序博客网 时间:2024/06/04 23:24

准备环境4台虚拟机 环境LNMP ,参照:CentOS7 一键安装LNMP环境

IP地址分别为 192.168.0.201,202,203,204

201当master ,202当backup 203和204当web应用

201和202分别安装 keepalived

首先要安装依赖包

yum -y install gcc pcre-devel zlib-devel openssl-devel popt-devel

下载keepalived

wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz

解压

tar zxvf keepalived-1.2.7.tar.gz

编译安装

./configuremake make install

执行如下命令,主要是把keepalived加到系统配置中让系统识别和开机启动

cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/mkdir /etc/keepalivedcp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/cp /usr/local/sbin/keepalived /usr/sbin/echo "/etc/init.d/keepalived start" >> /etc/rc.local

开始配置201和202的nginx的一模一样的没有任何区别,如下:
编辑 /usr/local/nginx/conf/nginx.conf

在server之前加

     upstream hq.com {#    ip_hash;    server 192.168.203:80;    server 192.168.204:80;    }

添加虚拟主机

server {listen 80;server_name hq.com;access_log off;index index.html index.htm index.php;  location / {     proxy_pass http://hq.com; }location ~ [^/]\.php(/|$) {    #fastcgi_pass remote_php_ip:9000;    fastcgi_pass unix:/dev/shm/php-cgi.sock;    fastcgi_index index.php;    include fastcgi.conf;    }location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {    expires 30d;    access_log off;    }location ~ .*\.(js|css)?$ {    expires 7d;    access_log off;    }}

nginx配置完了,接下来配置keepalived

编辑201的配置 vi /etc/keepalived/keepalived.conf

只需要修改 global_defs 和 vrrp_instance VI_1的匹配段里面的内容如下就可以了

global_defs {   router_id NGINX_UPSTREAM}vrrp_instance VI_1 {    state MASTER   #标识为主master    interface eth1  #需要绑定的网卡,默认是eth0,我这里是eth1根据实际情况而定,ifconfig命令查看    virtual_router_id 51   #这个与backup里面的路由id配置一样都是51    priority 100   #优先级别是100一定要大于backup里面的值    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.0.110   #虚拟ip地址,我们设置为110    }}

编辑202的配置 vi /etc/keepalived/keepalived.conf

只需要修改 global_defs 和 vrrp_instance VI_1的匹配段里面的内容如下就可以了

global_defs {   router_id NGINX_UPSTREAM}vrrp_instance VI_1 {    state BACKUP   #标识为从backup    interface eth1 #需要绑定的网卡,默认是eth0,我这里是eth1根据实际情况而定,ifconfig命令查看    virtual_router_id 51   #这个与master里面的路由id配置一样都是51    priority 99   #优先级别是99一定要小于master里面的值    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.0.110   #虚拟ip地址,我们设置为110    }}

以上主从的配置区别只有两个地方:state MASTER/BACKUP 和 priority 100/99 优先级别

配置好以后,我们在201和202上分别启动keepalived

/etc/init.d/keepalived start

然后在201用命令 ip addr 结果如下:
201执行ip addr的结果

我们发现多了一个ip为110,这个其实就是我们上面配置的虚拟ip

我们在202上面输入同样的命令 ip addr
这里写图片描述

并没有什么特殊的变化

我们把201的keepalived 停掉

[root@localhost conf]# /etc/init.d/keepalived stopStopping keepalived:                                       [  OK  ][root@localhost conf]# 

再来202上输入 ip addr 如下:
这里写图片描述

会发现110的ip绑定到这边了。

然后去201上启动 keepalived 之后,再看ip绑定情况,发现201上又多了100,而202上没有了。

这样只是模拟故障的情况下,一台挂掉了,另外一台能继续工作。

203和204的web配置参考上一篇文章 :Nginx负载均衡

现在本机的hosts要指向到 192.168.0.110 hq.com

我们依然在本机浏览器中访问 hq.com

依然显示:this address is 204! 与 this address is 203! 的交替出现。

现在的架构就健壮一点了,201,202,203,204 现在我们关闭任何一台服务器。业务不会中断

这里只是简单介绍了 keeplived的基本的用途,有一定的了解。实际上并没有监控到nginx上,监控nginx需要脚本,请自行百度。。。

提示:可以用nmap 检查nginx的端口来判断状态。