Nginx+Keepalived搭建高可用负载均衡集群

来源:互联网 发布:网络电玩城加盟 编辑:程序博客网 时间:2024/05/19 18:11

一、环境配置
nginx_master:192.168.1.128
nginx_slave :192.168.1.129
vip :192.168.1.130
网站服务器:192.168.1.144

二、安装
1)安装keepalived
1.安装依赖

yum install kernel-* gcc make openssl-*

2.下载keepalived安装包

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

3.解压

tar xvzf keepalived-1.2.19.tar.gz cd keepalived-1.2.19

4.配置

./configure --sysconfdir=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-504.el6.x86_64

5.编译安装

make && make install

6.验证安装是否正确

keepalived -v

7.设置开机启动

chkconfig keepalived on

2)安装nginx
官方nginx yum源:

[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/enabled=1gpgcheck=0

yum源设置好后直接安装即可:

yum install nginxchkconfig nginx on

三、配置
1)两台主机nginx的配置(完全一样)

#vim /etc/nginx/conf.d/upstream.confupstream nginx_80 {        server 192.168.1.144:80;        ip_hash;}#vim /etc/nginx/conf.d/server.confserver {    listen 80;    server_name 192.168.1.130;    location / {        proxy_pass http://nginx_80;    }    location /nginx_status{        stub_status on;        access_log off;        allow 127.0.0.1;        # 要允许公司ip访问nginx status        allow 192.168.1.0/24;        deny all;    }}

2)nginx_master的keepalived配置

#vim /etc/keepalived/keepalived.conf global_defs {   router_id nginx-ha1}vrrp_script check_nginx {    # 检查nginx状态的脚本    script "/data/script/check_nginx.sh"    # 执行间隔2秒    interval 2}vrrp_instance VI_1 {    # 两台主机都是BACKUP    state BACKUP    interface eth0    # 同一keepalived集群的virtual_router_id 必须相同,默认51    virtual_router_id 55    # 主的优先级高    priority 100    advert_int 1    # 不抢占:如果集群里已存在MASTER状态的主机,即使优先级高于MASTER也不抢占为MASTER。只在优先级高的主机上设置即可。    nopreempt    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        # 虚拟IP        192.168.1.130    }    track_script {        check_nginx    }}

3)nginx_slave的keepalived配置

#vim /etc/keepalived/keepalived.conf global_defs {   router_id nginx-ha2}vrrp_script check_nginx {    script "/data/script/check_nginx.sh"    interval 2}vrrp_instance VI_1 {    state BACKUP    interface eth0    virtual_router_id 55    # 备的优先级低    priority 80    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.1.130    }    track_script {        check_nginx    }}

4)防火墙设置

service iptables stop

5)部署nginx状态检查脚本check_nginx.sh

#!/bin/bashif [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ];then    #echo 1    /etc/init.d/nginx start    sleep 5    if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ];then        /etc/init.d/keepalived stop        #echo 2    fifi

给脚本设置可执行权限:

chmod +x /data/script/check_nginx.sh

6)开启keepalived的日志

#vim /etc/sysconfig/keepalivedKEEPALIVED_OPTIONS="-D -d -S 0"#vim /etc/rsyslog.conf# 配置文件最后面加上下面一行local0.*                                        /var/log/keepalived.log#重启rsyslog:service rsyslog restart

7)启动服务

# 先检查nginx配置文件正确性nginx -t# 启动nginx服务service nginx start# 同时启动keepalived服务service keepalived start# 过一会查看虚拟IP是否在nginx_master主机上ip addr
原创粉丝点击