阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Keepalived实现Nginx双主高可用负载均衡集群

174次阅读
没有评论

共计 3532 个字符,预计需要花费 9 分钟才能阅读完成。

实验目的:使用 keepalived 实现 Nginx 的双主高可用负载均衡集群。

实验环境:两台 Nginx proxy(双主 Nginx,各需要两块网卡,eth0 连接内网,eth1 连接外网)、两台 web server(请求的负载均衡)、一台 client 用于验证结果。

Keepalived 实现 Nginx 双主高可用负载均衡集群

注意:为了不影响实验结果,在实验开始前先关闭 iptables 和 selinux

操作步骤:

一、配置 IP

1. 配置 A 主机的 IP

# ip addr add dev eth0 192.168.10.2/24

2. 配置 B 主机的 IP

# ip addr add dev eth0 192.168.10.23/24

3. 配置 C 主机的 IP

# ip addr add dev eth0 192.168.10.3/24

4. 配置 D 主机的 IP

# ip addr add dev eth0 192.168.10.33/24

二、配置 web 服务(C 和 D 主机都做同样配置,只需修改默认主页中的 IP 地址为本机的 IP 即可,以示区别)

1. 安装 apache

# yum -y install apache

2. 创建默认主页

# vim /var/www/html/index.html

<h1>192.168.10.3</h1>

3. 启动 apache

# service httpd start

三、配置 sorry_server(此服务配置于 Nginx proxy 主机上,两台 Nginx proxy 都做同样配置,只需修改默认主页中的 IP 地址为本机的 IP 即可,以示区别)

1. 安装 apache

# yum -y install apache

2. 创建默认主页

# vim /var/www/html/index.html

<h1>sorry_server:192.168.10.2</h1>

3. 修改监听端口为 8080,以免与 nginx 所监听的端口冲突

# vim /etc/httpd/conf/httpd.conf

Listen 8080

4. 启动 apache 服务

四、配置代理(两台 Nginx proxy 都做同样配置)

1. 安装 nginx

# yum -y install nginx

2. 定义 upstream 集群组,在 http{}段中定义;

# vim /etc/nginx/nginx.conf

        http {

            upstream websrvs {

                server 192.168.10.3:80;

                server 192.168.10.33:80;

                server 127.0.0.1:8080 backup;

            }

        }

3. 调用定义的集群组,在 server{}段的 location{}段中调用;

# vim /etc/nginx/conf.d/default.conf

        server {

            location / {

                proxy_pass http://wersrvs;

                index index.html;

            }

        }

4. 启动服务

# service nginx start

五、配置 keepalived

A 主机上操作

1. 安装 keepalived

# yum -y install keepalived

2. 编辑 A 主机的配置文件 /etc/keepalived/keepalived.conf,作如下配置:

! Configuration File for keepalived

    global_defs {

    notification_email {

        root@localhost

    }

    notification_email_from keepalived@localhost

    smtp_server 127.0.0.1

    smtp_connect_timeout 30

    router_id CentOS6

    vrrp_mcast_group4 224.0.100.39

    }

    vrrp_script chk_down {

        script“[[-f /etc/keepalived/down]] && exit 1 || exit 0”

        interval 1

        weight -5

    }

    vrrp_script chk_nginx {

        script“killall -0 nginx && exit 0 || exit 1”

        interval 1

        weight -5

        fall 2

        rise 1

    }

    vrrp_instance ngx {

        state MASTER

        interface eth1

        virtual_router_id 14

        priority 100

        advert_int 1

        authentication {

            auth_type PASS

            auth_pass MDQ41fTp

        }

        virtual_ipaddress {

            192.168.20.100/24 dev eth1

        }

        track_script {

            chk_down

            chk_nginx

        }

    }

    vrrp_instance ngx2 {

        state BACKUP

        interface eth1

        virtual_router_id 15

        priority 98

        advert_int 1

        authentication {

            auth_type PASS

            auth_pass XYZ41fTp

        }

        virtual_ipaddress {

            192.168.20.200/24 dev eth1

        }

        track_script {

            chk_down

        chk_nginx

        }

    }

B 主机也作同样配置,稍作修改即可,需要修改的地方如下:

    vrrp_instance ngx {

        state BACKUP

        priority 98

    }

    vrrp_instance ngx2 {

        state MASTER

        priority 100

    }

六、模拟故障,验证结果

1. 启动两台 Nginx proxy 的 keepalived 服务

# service keepalived start

2. 访问 192.168.20.100,结果应是后端的 web server 轮询响应请求

Keepalived 实现 Nginx 双主高可用负载均衡集群

3. 访问 192.168.20.200,结果应是后端的 web server 轮询响应请求

Keepalived 实现 Nginx 双主高可用负载均衡集群

4. 将后端的 web server 关闭一台,访问 192.168.20.100 或 192.168.20.200,响应请求的将只是另一台正常运行 web server 的主机

Keepalived 实现 Nginx 双主高可用负载均衡集群

5. 将后端的 web server 都关闭,此时访问 192.168.20.100 或 192.168.20.200,响应请求的将只是 Nginx proxy 中定义的主 server 中的 sorry_server

Keepalived 实现 Nginx 双主高可用负载均衡集群

6. 关闭一台 Nginx proxy 的 nginx 服务,备 server 将把 IP 地址添加到本机,继续提供服务,此时访问 192.168.20.100 或 192.168.20.200 并不会有任何察觉

Keepalived 实现 Nginx 双主高可用负载均衡集群

一些关于 Keepalived 相关教程集合

CentOS 7 下 Keepalived + HAProxy 搭建配置详解  http://www.linuxidc.com/Linux/2017-03/141593.htm

Keepalived 高可用集群应用场景与配置 http://www.linuxidc.com/Linux/2017-03/141866.htm

Nginx+Keepalived 实现站点高可用  http://www.linuxidc.com/Linux/2016-12/137883.htm

Nginx+Keepalived 实现站点高可用(负载均衡)  http://www.linuxidc.com/Linux/2016-12/138221.htm

构建高可用集群 Keepalived+Haproxy 负载均衡 http://www.linuxidc.com/Linux/2016-12/138917.htm

CentOS6.5 下 Keepalived 高可用服务单实例配置 http://www.linuxidc.com/Linux/2016-12/138110.htm

Keepalived 安装与配置 http://www.linuxidc.com/Linux/2017-02/140421.htm

Linux 下 Keepalived 服务安装文档  http://www.linuxidc.com/Linux/2017-03/141441.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143738.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3532字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中