美文网首页
高可用Nginx集群安装搭建手册

高可用Nginx集群安装搭建手册

作者: weylan | 来源:发表于2020-02-15 14:07 被阅读0次

更多内容请浏览本人博客

LVS搭建Nginx集群

准备工作

环境说明

共需要三台linux centos服务器,一台LVS,两台RealServer,端口号必须保持一致,设为80,所以需要3台服务器。

设定IP环境如下

服务名 IP 端口 作用
LVS-Director VIP 192.168.120.200 RIP 192.168.120.58 80 运行LVS均衡调度,对外提供虚拟IP访问
RealServer-Nginx1 192.168.120.83 80 运行nginx及tomcat服务,作为真实服务 1
RealServer-Nginx2 192.168.120.58 80 运行nginx及tomcat服务,作为真实服务 2

LVS-Director负责将80端口的请求,负载均衡到Nginx1、Nginx2两台真实服务器上去,接下来我们将进行配置LVS-Director的路由方式-DR,直接路由。
准备IP地址信息打印程序balancer-1.0.0.jar,http://hostname:port/server/ip,打印服务器的IP端口号信息。

启动RealServer服务

安装步骤,参考前面Nginx的手册来操作,将Nginx分别安装在前面准备的两台linux服务器上。

启动Nginx,都为80端口,代理balancer-1.0.0.jar服务。

balancer-1.0.0.jar的端口号,分别为8081

操作192.168.120.83、192.168.120.58

java -jar balancer-1.0.0.jar --server.port=8081 cd /usr/local/nginx sudo ./nginx -c conf/nginx_lvs_upstream.conf

nginx_lvs_upstream.conf配置内容

worker_processes 1;
events { 
    worker_connections 1024; 
}
http {
    include mime.types; 
    default_type text/html; 
    sendfile on;
    keepalive_timeout 65;
    
    upstream backend { 
        server 127.0.0.1:8081; 
    }
    server { 
        location / {
            proxy_pass http://backend; 
        }
    } 
}

测试各个端口的服务是否可用,http://hostname:port/server/ip

安装LVS

LVS全称为Linux Virtual Server,工作在ISO模型中的第四层,由于其工作在第四层,因此与 iptables类似,必须工作在内核空间上。
因此lvs与iptables一样,是直接工作在内核中的,叫ipvs,主 流的linux发行版默认都已经集成了ipvs,因此用户只需安装一个管理工具ipvsadm即可。
LVS现在已成为Linux内核的一部分,默认编译为ip_vs模块,必要时能够自动调用。以下操作可以手动加载 ip_vs模块,并查看当前系统中ip_vs模块的版本信息

加载LVS

# 通过下面命令来检查,如果没有显示,则说明没有加载 
lsmod |grep ip_vs 
ip_vs 145497 0 
# 加载LVS,执行下面命令就可以把ip_vs模块加载到内核 
# 或者如果是centos7,通过ipvsadm来加载,可以跳过这步 sudo modprobe ip_vs 
# 查看LVS版本号,说明安装成功 
cat /proc/net/ip_vs IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn

IPVS管理工具ipvsadm

ipvsadm是lvs的管理工具,我们在使用ipvs的时候需要使用到这个工具。

安装依赖

sudo yum install -y gcc gcc-c++ makepcre pcre-devel kernel-devel openssl-devel libnl-devel popt*

安装ipvsadm

curl "http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz" -o ipvsadm-1.26.tar.gz tar zxf ipvsadm-1.26.tar.gz 
cd ipvsadm-1.26

rpm -qa | grep kernel-devel # 确认是否安装了kernel-devel(默认已经安装)
sudo make && sudo make install 

curl "http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.25- 1.src.rpm" -o ipvsadm-1.25-1.src.rpm 
sudo rpm -ivh ipvsadm-1.25-1.src.rpm 

# 检查是否安装成功,显示下面的内容表示安装成功 
sudo ipvsadm 
IP Virtual Server version 1.2.1 (size=4096) 
Prot LocalAddress:Port Scheduler Flags 
-> RemoteAddress:Port Forward Weight ActiveConn InActConn

LVS DR模式

DR模式是LVS三种实现负载均衡方式中性能最好的一个,下面就使用这个模式,配置Nginx负载均衡的实现。

LVS服务配置

编辑lvs文件

sudo vim /usr/local/sbin/lvs_dr.sh

输入下面内容

#! /bin/bash 
# 1,启用ip转发;0,禁止ip转发;默认0。 
echo 1 > /proc/sys/net/ipv4/ip_forward 
# 定义两个变量方便后面使用 
ipv=/sbin/ipvsadm 
vip=192.168.120.200 
# 通过ifconfig,找到自己的网卡名,我这里是enp0s3 
# 下掉enp0s3:0的虚拟ip ifconfig enp0s3:0 down 
# 通过ifconfig,找到自己的网卡名,在其下面绑定虚拟ip 
# 在enp0s3上绑定虚拟ip,虚拟ip地址的广播地址是它本身 
ifconfig enp0s3:0 $vip broadcast $vip netmask 255.255.255.255 up 
# 添加路由规则 
route add -host $vip dev enp0s3:0 
# 清除原有转发规则 
$ipv -C 
# 新增虚拟服务端口,采用轮询策略,负载转发端口是80 
$ipv -A -t $vip:80 -s rr 
# 定义实际服务ip 
rs1=192.168.120.103 
rs2=192.168.120.58 
# -a在虚拟IP中添加上游服务信息;-t表示tcp服务 
# -r表示真实服务信息;-g指定为LVS为直接路由模式 
$ipv -a -t $vip:80 -r $rs1:80 -g 
$ipv -a -t $vip:80 -r $rs2:80 -g 
$ipv --set 1 2 1

使配置生效

sudo sh /usr/local/sbin/lvs_dr.sh 
sudo ipvsadm # 查看虚拟服务端口转发列表 
sudo ipvsadm -ln

可能出现的错误

0、SIOCSIFFLAGS: 无法指定被请求的地址 
没有对应的enp0s3:0网卡ip,本来就没有,可以忽略。运行脚本后enp0s3:0正常出现就没有问题。 

1、没有轮询效果 
一条tcp的连接经过lvs后,lvs会把这台记录保存15分钟 
sudo ipvsadm -L --timeout # 查看timeout配置信息 
可以设置短一点,达到实验效果: 
sudo ipvsadm --set 1 2 1 

注: 保存添加的虚拟ip记录和ipvsadm的规则可以使用service ipvsadm save,还可以用-S或-- save。清除所有记录和规则除了使用-C,还以使用--clear 

2、错误:Memory allocation problem 
查看一下vmlloc使用情况: 
cat /proc/meminfo | grep -i vmalloc 
在/etc/default/grub文件的末尾添加如下一行: 
GRUB_CMDLINE_LINUX="vmalloc=256MB" 

完成上述操作之后,发现lvs状态仍然是SYN_RECV。 

3、lvs状态仍然是SYN_RECV 
抓包后的pcap文件中,没有syn ack。于是想到是不是在什么地方丢掉了。 
看到官方文档中有描述要设置re_ filter。 
查了一下这个参数的解释 
====================================== 
rp_filter参数有三个值,0、1、2,具体含义: 
0:不开启源地址校验。 
1:开启严格的反向路径校验。对每个进来的数据包,校验其反向路径是否是最佳路径。如果反向路径不是最 佳路径,则直接丢弃该数据包。 
2:开启松散的反向路径校验。对每个进来的数据包,校验其源地址是否可达,即反向路径是否能通(通过任 意网口),如果反向路径不同,则直接丢弃该数据包。 
======================================= 
default的值是1,这里改为2 
echo 2 > /proc/sys/net/ipv4/conf/ 网卡名/rp_filter 
echo 2 > /proc/sys/net/ipv4/conf/ 网卡名/rp_filter 
systemctl restart network.service 

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore 
echo "2"> /proc/sys/net/ipv4/conf/lo/arp_announce 
echo "1"> /proc/sys/net/ipv4/conf/all/arp_ignore 
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

ipvsadm操作说明

sudo ipvsadm -C 清除 
说明: 
-A --add-service在服务器列表中新添加一条新的虚拟服务器记录 
-t 表示为tcp服务 
-u 表示为udp服务 
-s --scheduler 使用的调度算法, rr | wrr | lc | wlc | lblb | lblcr | dh | sh | sed | nq 默认调度算法是 wlc 
-a --add-server 在服务器表中添加一条新的真实主机记录 
-r --real-server 真实服务器地址 
-m --masquerading 指定LVS工作模式为NAT模式 
-w --weight 真实服务器的权值 
-g --gatewaying 指定LVS工作模式为直接路由器模式(也是LVS默认的模式) 
-i --ipip 指定LVS的工作模式为隧道模式 sudo ipvsadm 
-help 可以查看更多的帮助信息

真实服务配置

在lvs的DR和TUn模式下,用户的访问请求到达真实服务器后,响应数据是直接返回给用户的,而不再

经过前端的Director Server,因此,就需要在每个Real server节点上增加虚拟的VIP地址,这样数据才

能直接返回给用户。

2台服务都需要配置相同的内容,2台真实web服务器的配置信息,编辑lvs_dr_rs.sh文件

sudo vim /usr/local/sbin/lvs_dr_rs.sh

输入内容

#! /bin/bash 
vip=192.168.120.200 
ifconfig enp0s3:0 $vip broadcast $vip netmask 255.255.255.255 up 
# 使用回环网卡适配器 
route add -host $vip lo:0 
# 关闭arp解析 
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore 
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce 
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore 
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

关闭arp解析

arp_ignore:当ARP请求发过来后发现自己正是请求的地址是否响应;

0 - 利用本地的任何地址,不管配置在哪个接口上去响应ARP请求; 
1 - 哪个接口上接受ARP请求,就从哪个端口上回应。

arp_announce :定义不同级别,当ARP请求通过某个端口进来是否利用这个接口来回应。

0 - 利用本地的任何地址,不管配置在哪个接口上去响应ARP请求; 
1 - 避免使用另外一个接口上的mac地址去响应ARP请求; 
2 - 尽可能使用能够匹配到ARP请求的最佳地址。

使配置生效

sudo sh /usr/local/sbin/lvs_dr_rs.sh 
sudo sysctl -p

查看日志

LVS的日志是通过syslog来输出的,通过下面的命令就能查看最新日志输出,方便我们查看错误信息

sudo tail -f /var/log/messages

检查是否生效

多出enp0s3:0:虚拟网卡

ifconfig 
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.120.127 netmask 255.255.255.0 broadcast 192.168.120.255 inet6 fe80::370a:a3ea:20d0:69e3 prefixlen 64 scopeid 0x20<link> ether 08:00:27:f1:e3:c4 txqueuelen 1000 (Ethernet) RX packets 123143 bytes 129065693 (123.0 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 28035 bytes 2598163 (2.4 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 88 bytes 9145 (8.9 KiB) RX errors 0 dropped 0 overruns 0 frame 0 
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 192.168.100.200 netmask 255.255.255.255 loop txqueuelen 1000 (Local Loopback)

可能出现的错误

不能telnet端口

现象描述 VIP能ping桶,但是VIP对应的端口号telnet不通

解决方法

确认真实服务器VIP是否一致

真实服务器与LVS-Director的端口号必须相同

测试Nginx集群效果

在浏览器输入访问

http://192.168.120.200:8080/server/ip

如果你发现IP地址在变化,恭喜你,成功了!

封装成shell脚本

LVS-Director脚本

见附件《lvs_dr.sh》shell脚本,在LVS-DR机器上我们只需要执行lvs_dr.sh脚本即可

使用方法

sudo sh lvs_dr.sh --help 
Usage: lvs_dr.sh {start ¦ stop} 
Usage: lvs_dr.sh start vip vip_port "real_server_ips..." virtual_net_card 
Usage: lvs_dr.sh stop virtual_net_card 

\# 启动,指定虚拟ip、真实服务ip、虚拟网卡 
sudo sh lvs_dr.sh start 192.168.120.200 80 "192.168.120.83 192.168.120.58" 
enp0s3:0 

\# 停止 
sudo sh lvs_rs.sh stop enp0s3:0 

RealServer脚本

见附件《lvs_rs.sh》shell脚本,在RealServer机器上我们只需要执行lvs_rs.sh脚本即可

使用方法

sh lvs_rs.sh --help 
Usage: lvs_rs.sh {start ¦ stop} 
Usage: lvs_rs.sh start vip loopback 
Usage: lvs_rs.sh stop loopback 

\# 启动,指定虚拟ip、虚拟网卡 
sudo sh lvs_rs.sh start 192.168.120.200 lo:0 

\# 停止 
sudo sh lvs_rs.sh stop lo:0 

window下编写的shell脚本,在linux下运行有 $'\r': 未找到命令 的错误,是因为编码格式问题,通过

dos2unix来解决。

sudo yum install -y dos2unix 
sudo dos2unix lvs_rs.sh

Keepalived保证应用高可用

搭建Nginx高可用

环境准备

共需要两台linux centos服务器,一台作为Nginx Master,一台作为Nginx Backup。两台服务器上都需要安装Keepalived,通过Keepalived来开启虚拟端口,以及保证Nginx高可用。

服务名 IP 端口 作用
Nginx-Master
Keepalived-Master
RIP 192.168.120.58
VIP 192.168.120.200
80 运行LVS均衡调度,对外提供虚拟IP访问
Nginx-Backup
Keepalived-Backup
RIP 192.168.120.83
VIP192.168.120.200
80 运行nginx及tomcat服务,作为真实服务1

Keepalived不仅仅保证LVS高可用,也能保证其他应用高可用,比如tomcat、Nginx、甚至RPC服务。
我们需要三份配置文件(一个nginx_monitor监控脚本,主备LVS各一份keepalived配置)

Nginx监控脚本

在监控脚本中,通过ps命令来不停的探测nginx进程是否存在,来判断nginx是否还可用。编辑
nginx_monitor.sh文件

sudo vim /etc/keepalived/nginx_monitor.sh 

脚本内容

#!/bin/bash 
# shell脚本监控:如果程序的进程存在,则认为没有问题 
if [ "$(ps -ef | grep "nginx"| grep -v grep| grep -v keepalived )" == "" ] 
    then
        # 输出日志到系统日志中 
        echo "nginx ############# app down " >> /var/log/messages 
        exit 1 
    else
        # 一切正常 
        exit 0 
fi

执行脚本

# 创建nginx monitor 脚本,并赋予可执行权限 
sudo chmod +x /etc/keepalived/nginx_monitor.sh 
# 测试一下脚本能不能执行 
sh /etc/keepalived/nginx_monitor.sh 
# 没报错即表示为成功 

安装Keepalived

在两台Nginx服务上安装Keepalived 2.0.18版本

安装依赖

sudo yum install -y openssl-devel popt-devel libnl-devel kernel-devel gcc

安装Keepalived

cd ~ 
wget https://www.keepalived.org/software/keepalived-2.0.18.tar.gz 
tar -xvzf keepalived-2.0.18.tar.gz 
cd keepalived-2.0.18 
# 安装到/usr/local/keepalived目录 
./configure --prefix=/usr/local/keepalived --sysconf=/etc 

sudo make & sudo make install 

安装成功后,配置放在/etc/keepalived/目录中。

Keepalived配置

# - master主机 
keepalived-nginx-master.conf 
# - backup备机 
keepalived-nginx-backup.conf 

Nginx-Master配置

文件内容,参考课件资料keepalived-lvs-master.conf

# 定义一个名为monitor的脚本 

vrrp_script monitor { 

# 监控脚本存放地址 

script "/etc/keepalived/nginx_monitor.sh" 

# 每隔1秒执行一次 

interval 1 

}

# 定义一个vrrp示例 

vrrp_instance VI_1 { 

state MASTER #(主机为MASTER,备用机为BACKUP) 

interface enp0s3 #(HA监测网卡接口) 

virtual_router_id 61 #(主、备机的virtual_router_id必须相同,不大于255) 

priority 90 #(主、备机取不同的优先级,主机值较大,备份机值较小,值越大优先级越高) 

advert_int 1 #(VRRP Multicast广播周期秒数) 

track_script { 

monitor #(监控脚本名称) 

}

virtual_ipaddress { 

192.168.120.200 #(VRRP HA虚拟IP) 

} 

}

Nginx-Backup配置

/etc/keepalived/keepalived-nginx-backup.conf

\

# 定义一个名为monitor的脚本 

vrrp_script monitor { 

\# 监控nginx的脚本存放地址 

script "/etc/keepalived/nginx_monitor.sh" 

\# 每隔1秒执行一次 

interval 1 

}

\# 定义一个vrrp示例 

vrrp_instance VI_1 { 

state BACKUP #(主机为MASTER,备用机为BACKUP) 

interface enp0s3 #(HA监测网卡接口) 

virtual_router_id 61 #(主、备机的virtual_router_id必须相同) 

priority 80 #(主、备机取不同的优先级,主机值较大,备份机值较小,值越大优先级越高) 

advert_int 1 #(VRRP Multicast广播周期秒数) 

track_script { 

monitor #(监控脚本名称) 

}

virtual_ipaddress { 

192.168.120.200 #(VRRP HA虚拟IP) 

} 

}

启动服务

启动Keepalived

# 启动master主机 

sudo /usr/local/keepalived/sbin/keepalived -f /etc/keepalived/keepalived-nginx- 

master.conf 

\# 启动backup备机 

sudo /usr/local/keepalived/sbin/keepalived -f /etc/keepalived/keepalived-nginx- 

backup.conf 

查看日志

Keepalived和LVS的日志是通过syslog来输出的,通过下面的命令就能查看最新日志输出,方便我们查

看错误信息

sudo tail -f /var/log/messages 

... 

nginx ############# app down 

nginx ############# app down 

nginx ############# app down 

... 

可以看到nginx服务还没有启动

启动两台Nginx服务

sudo ./nginx
Master-Nginx的日志输出

Oct 8 15:43:23 localhost Keepalived_vrrp[4127]: Script `monitor` now returning 

0

Oct 8 15:43:23 localhost Keepalived_vrrp[4127]: VRRP_Script(monitor) succeeded 

Oct 8 15:43:23 localhost Keepalived_vrrp[4127]: (VI_1) Entering BACKUP STATE 

Oct 8 15:43:26 localhost Keepalived_vrrp[4127]: (VI_1) Entering MASTER STATE 

注意事项

两台keepalived服务间需要通信,关闭防火墙

firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running) 

systemctl list-unit-files|grep firewalld.service 

systemctl stop firewalld.service #停止firewall 

systemctl disable firewalld.service #禁止firewall开机启动 

[root@localhost ~]#systemctl stop firewalld.service 

[root@localhost ~]#systemctl disable firewalld.service 

启动一个服务:systemctl start firewalld.service 

关闭一个服务:systemctl stop firewalld.service 

重启一个服务:systemctl restart firewalld.service 

显示一个服务的状态:systemctl status firewalld.service 

在开机时启用一个服务:systemctl enable firewalld.service 

在开机时禁用一个服务:systemctl disable firewalld.service 

查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $? 

查看已启动的服务列表:systemctl list-unit-files|grep enabled 

测试

关闭master nginx服务,服务是否仍然可用,backup服务是否替补上来。

ps -ef|grep nginx 

root 5189 1 0 22:01 ? 00:00:00 nginx: master process 

/usr/sbin/nginx -c /etc/nginx/nginx_lvs_upstream.conf 

nginx 5190 5189 0 22:01 ? 00:00:00 nginx: worker process 

sudo kill 5189 
\1. 关掉备机,功能完全不受影响。 

\2. 关掉主机,虚拟IP漂移到备机,备机开始工作。 

\3. 关掉主机nginx,主机监控到无nginx后,自动切换

搭建LVS高可用

只有一台LVS服务,万一挂了怎么办?需要Keepalived来做高可用,准备两台linux服务器,用来安装两

台keepalived,Keepalived安装过程如下。

准备工作

做LVS高可用,我们需要准备四台服务器

服务环境设定

共需要四台服务器,两台LVS,两台RealServer,端口号必须保持一致,设为****80,所以需要4台服务器。

设定IP环境如下

服务名 IP 作用
LVS-Master Keepalived-Master VIP 192.168.120.200 RIP 192.168.120.127 80 主LVS,对外提供虚拟IP访问
LVS-Backup Keepalived-Backup VIP 192.168.120.200 RIP 192.168.120.128 80 备份LVS,对外提供虚拟IP访问
当主LVS不可用时,VIP漂移到备份LVS
当主LVS恢复可用时,VIP漂移回主LVS
RealServer Nginx1 192.168.120.124 80 运行nginx及tomcat服务,作为真实服务1
RealServer Nginx2 192.168.120.120 80 运行nginx及tomcat服务,作为真实服务2

LVS-Director负责将80端口的请求均衡到Nginx1、Nginx2两台真实服务器上去,接下来我们将进行配

置LVS-Director的路由方式-DR,直接路由。

准备IP地址信息打印程序balancer-1.0.0.jar,http://hostname:port/server/ip,打印服务器的IP端口号

信息。

准备LVS

LVS-Director负责将80端口的请求均衡到Nginx1、Nginx2两台真实服务器上去,接下来我们将进行配

置LVS-Director的路由方式-DR,直接路由。

准备IP地址信息打印程序balancer-1.0.0.jar,http://hostname:port/server/ip,打印服务器的IP端口号

信息。

准备后端服务

在RealServer-Nginx1、RealServer-Nginx2两台服务上启动后端服务,具体操作参考前面的环境准备。

确保各个服务端口可用正常

安装Keepalived

在两台LVS服务上安装Keepalived 2.0.18版本

安装依赖

sudo yum install -y openssl-devel popt-devel libnl-devel kernel-devel gcc

安装****Keepalived

cd ~ 

wget https://www.keepalived.org/software/keepalived-2.0.18.tar.gz 

tar -xvzf keepalived-2.0.18.tar.gz 

cd keepalived-2.0.18 

\# 安装到/usr/local/keepalived目录 

./configure --prefix=/usr/local/keepalived --sysconf=/etc 

sudo make & sudo make install 

安装成功后,配置放在/etc/keepalived/目录中。

Keepalived配置

LVS-Master配置

文件内容,参考课件资料keepalived-lvs-master.conf

# 全局段,故障通知邮件配置 

global_defs { 

notification_email { 

root@localhost 

}

notification_email_from root@along.com 

smtp_server 127.0.0.1 

smtp_connect_timeout 30 

router_id keepalived_lvs 

}

\# 配置虚拟路由器的实例段,VI_1是自定义的实例名称,可以有多个实例段 

\# VI_1是自定义的实例名称 

vrrp_instance VI_1 { 

\#初始状态,MASTER|BACKUP 

state MASTER 

\#通告选举所用端口 

interface enp0s3 

\#虚拟路由的ID号(一般不可大于255) 

virtual_router_id 51 

\#优先级信息 #备节点必须更低 

priority 100 

\#VRRP通告间隔,秒 

advert_int 1 

\#vip 

virtual_ipaddress { 

192.168.120.200 

} 

}

\# 设置一个virtual server段 

virtual_server 192.168.120.200 80 { 

\# service polling的delay时间,即检查realserver状态的间隔时间 

\# 作为测试改为0,默认6 

delay_loop 0

\#LVS调度算法:rr|wrr|lc|wlc|lblc|sh|dh 

lb_algo rr 

\#LVS集群模式:NAT|DR|TUN 

lb_kind DR 

\#会话保持时间(持久连接,秒),即以用户在600秒内被分配到同一个后端realserver 

\#作为测试改为0 

persistence_timeout 0 

\#健康检查用的是TCP还是UDP 

protocol TCP 

\# real server设置段 

\# 后端真实节点主机的权重等设置 

real_server 192.168.120.120 80 { 

\#weight 1 #给每台的权重,rr无效 

\#http服务 

HTTP_GET { 

url { 

path / 

}

\#连接超时时间 

connect_timeout 3 

\#重连次数 

retry 3 

\#重连间隔 

delay_before_retry 3 

} 

}

real_server 192.168.120.124 80 { 

\#weight 2 

HTTP_GET { 

url { 

path / 

}

connect_timeout 3 

retry 3 

delay_before_retry 3 

} 

} 

}

LVS-Backup配置

文件内容,参考课件资料keepalived-lvs-backup.conf

参考LVS-Master配置,修改vrrp_instance VI_1部分的内容,state、priority两个地方。其他的保持不

变。

# 配置虚拟路由器的实例段,VI_1是自定义的实例名称,可以有多个实例段 

\# VI_1是自定义的实例名称 

vrrp_instance VI_1 { 

\#初始状态,MASTER|BACKUP 

state BACKUP 

\#通告选举所用端口 

interface enp0s3 

\#虚拟路由的ID号(一般不可大于255) 

virtual_router_id 51 

\#优先级信息 #备节点必须更低

priority 90 

\#VRRP通告间隔,秒 

advert_int 1 

\#vip 

virtual_ipaddress { 

192.168.120.200 

} 

}

启动****Keepalived

# 启动master主机 

sudo /usr/local/keepalived/sbin/keepalived -f /etc/keepalived/keepalived-lvs- 

master.conf 

\# 启动backup备机 

sudo /usr/local/keepalived/sbin/keepalived -f /etc/keepalived/keepalived-lvs- 

backup.conf

测试LVS高可用

关闭LVS-Master,服务是否仍然可用?

关闭RealServer-Nginx1,整个服务是否仍然可用?

相关文章

网友评论

      本文标题:高可用Nginx集群安装搭建手册

      本文链接:https://www.haomeiwen.com/subject/jbnefhtx.html