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

Linux基础教程之Keepalived实现Nginx双主高可用负载均衡集群

90次阅读
没有评论

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

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

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

Linux 基础教程之 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 轮询响应请求

Linux 基础教程之 Keepalived 实现 Nginx 双主高可用负载均衡集群

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

Linux 基础教程之 Keepalived 实现 Nginx 双主高可用负载均衡集群

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

Linux 基础教程之 Keepalived 实现 Nginx 双主高可用负载均衡集群

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

Linux 基础教程之 Keepalived 实现 Nginx 双主高可用负载均衡集群

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

Linux 基础教程之 Keepalived 实现 Nginx 双主高可用负载均衡集群

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