在这个互联网飞速发展的时代,人们已经离不开网络,其中网购最为常见。在家网购,上班路上网购,吃饭也购物,下班还网购,2017年双十一天猫支付峰值达到了25.6万笔/秒。热点网站中频繁出现的大量并发如何去解决?
那么在此次课程中,大家就会领略到,使用目前市面上处理并发能力非常强悍的nginx及keepalived如何快速的搭建一个处理高并发并的高可用的服务
。
本课程介绍了目前处理并发能力非常强悍的开源软件nginx快速入门及使用,介绍nginx+tomcat集群处理并发解决方案,带大家认识虚拟路由,了解虚拟路由的工作流程并安装keepalived,实现nginx+keepalived主备配置,达到nginx高可用的效果。
资料下载: https://download.csdn.net/download/qq_22075913/87425983
Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器
,也是一个 IMAP/POP3/SMTP 代理服务器 。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过四年多了。Igor 将源代码以类BSD许可证的形式发布。自Nginx 发布以来,Nginx 已经因为它的稳定性、丰富的功能集、 示例配置文件和低系统资源的消耗而闻名了。目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯。
Nginx官网http://nginx.org/
Nginx目前已经更新到了nginx-1.23.3版本,我们可以直接到官网下载,由于外面服务器大多都使用linux环境作为服务器,所以我们也弄一台linux环境的虚拟机。
虚拟机我们已经装好了,IP:192.168.126.129,由于nginx是用C语言写的,而且还支持地址栏重写等功能,所以我们需要安装一下相关的依赖包。
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
安装流程如下:
安装流程如下:
nginx-1.23.3.tar.gz
[root@localhost server]# tar -xf nginx-1.23.3.tar.gz
[root@localhost server]# mkdir nginx
[root@localhost server]# cd nginx-1.23.3
[root@localhost nginx-1.23.3]# ./configure --prefix=/usr/local/server/nginx
[root@localhost nginx-1.23.3]# make && make install
上面./configure后面的一些常用参数配置参考如下
–prefix
指定部署根目录,默认是/usr/local/nginx.此设置会更改其他配置目录的相对路径
–sbin-path
可执行文件的路径,默认为/sbin/nginx
–conf-path
配置文件的路径,默认为/conf/nginx.conf
–pid-path
pid文件的存放路径,默认存放在/logs/nginx.pid,是一个存放nginx的master进程ID的
纯文本文件,刚安装的时候不会生成,nginx启动的时候会自动生成。
–http-log-path
access日志存放位置,每个http的请求在结束的时候都会访问的日志。
–with-ld-opt
加入第三方链接时需要的参数。编译之后nginx最终的可执行二进制文件是由编译后
的目标文件和一些第三方的库链接生成的。如果想要将某个库链接到nginx中,
就需要指定–with-ld-opt=目标库名-目标库路径
–with-debug
将nginx需要打印debug调试级别日志的代码编译进nginx,这样才可以通过修改配置
文件将调试日志打印出来,便于定位服务问题
安装第三方模块
./configure --prefix=/usr/local/server/nginx --add-module=/usr/local/server/nginx_module/echo-nginx-module-0.61 --with-debug
这时候Nginx已经安全完成,我们进入/usr/local/server/nginx目录查看
[root@localhost nginx-1.23.3]# cd ../nginx
[root@localhost nginx]# ls
conf html logs sbin
[root@localhost nginx]#
Nginx安装完成后不要忘了防火墙开放80端口
[root@localhost sbin]# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
[root@localhost sbin]# service iptables restart
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
[root@localhost sbin]#
或者关闭防火墙
1:查看防火状态
systemctl status firewalld
service iptables status
2:暂时关闭防火墙
systemctl stop firewalld
service iptables stop
3:永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
4:重启防火墙
systemctl enable firewalld
service iptables restart
5:永久关闭后重启
//暂时还没有试过
chkconfig iptables on
访问http://192.168.126.129/
nginx常用命令
nginx -c /usr/local/server/nginx/conf/nginx.conf 启动nginx(windows下start nginx);
nginx -s quit 停止ngix
nginx -s reload 重新载入nginx(当配置信息发生修改时)
nginx -v 查看版本
nginx -t 查看nginx的配置文件的目录
nginx -h 查看帮助信息
启动nginx
语法:daemon on | off
默认值:on
是否以守护进程的方式运行nginx,守护进程是指脱离终端并且在后台运行的进程,关闭守护进程执行的方式可以让我们方便调试nginx
方便调试nginx
语法:on | off 默认on
是否以master/worker方式进行工作,在实际的环境中 nginx是以一个master进程管理多个worker进程的方式运行的,关闭后 nginx就不会fork出worker子进程来处理请求,而是用master进程自身来处理请求worker_processes number; 默认1,在master/worker运行方式下 worker进程的数目,一般情况下用户要配置与CPU内核数相等的worker进程。
启动nginx查看没有子进程
语法:error_log file [ debug | info | notice | warn | error | crit ]
语法:include file | *
默认值:none
你可以包含一些其他的配置文件来完成你想要的功能。
0.4.4版本以后,include指令已经能够支持文件通配符:
include vhosts/*.conf;
语法:pid file
默认值:编译时指定
pid /var/log/nginx.pid;
指定pid文件,可以使用kill命令来发送相关信号,例如你如果想重新读取配置文件,则可以使用:
kill -HUP cat /var/log/nginx.pid
如果主进程以root运行,Nginx将会调用setuid()/setgid()来设置用户/组,如果没有指定组,那么将使用与用户名相同的组,默认情况下会使用nobody用户与nobody组(或者nogroup),或者在编译时指定的–user=USER和–group=GROUP的值。
语法:worker_processes number 默认值:1
由于以下几点原因,Nginx可能需要运行不止一个进程
在事件模块这一章中我们将使用worker_processes和worker_connections来计算理论最大连接数(max_clients):
max_clients = worker_processes * worker_connections
启动nginx并查看进程,只有一个worker process
如图所示有4个worker process
这个指令指定一个路径使用某个某个,注意它可能类似于root,但是document root没有改变,请求只是使用了别名目录的文件。
location /i/ {
alias /spool/w3/images/;
}
上个例子中,请求"/i/top.gif"将返回这个文件: "/spool/w3/images/top.gif"。
Alias同样可以用于带正则表达式的location,如:
location ~ ^/download/(.*)$ {
alias /home/website/files/$1;
}
语法:keepalive_timeout [ time ] [ time ]
默认值:keepalive_timeout 65
使用字段:http, server, location
参数的第一个值指定了客户端与服务器长连接的超时时间
,超过这个时间,服务器将关闭连接。
Keep-Alive
”)参数的这两个值可以不相同
下面列出了一些服务器如何处理包含Keep-Alive的应答头:
语法(0.7.x):listen address:port [ default [ backlog=num | rcvbuf=size | sndbuf=size | accept_filter=filter | deferred | bind | ssl ] ]
语法(0.8.x):listen address:port [ default_server [ backlog=num | rcvbuf=size | sndbuf=size | accept_filter=filter | deferred | bind | ssl ] ]
默认值:listen 80
使用字段:server
listen指令指定了server{…}字段中可以被访问到的ip地址及端口号,可以只指定一个ip,一个端口,或者一个可解析的服务器名。
listen 127.0.0.1:8000;
listen 127.0.0.1;
listen 8000;
listen *:8000;
listen localhost:8000;
语法:location [=|||^~|@] /uri/ { … }
默认值:no
使用字段:server
这个参数根据URI的不同需求来进行配置,可以使用字符串与正则表达式匹配,如果要使用正则表达式,你必须指定下列前缀:
1、~ 不区分大小写。
2、~ 区分大小写。
location = / {
# 只匹配 / 的查询.
[ configuration A ]
}
location / {
# 匹配任何以 / 开始的查询,但是正则表达式与一些较长的字符串将被首先匹配。
[ configuration B ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 开始的查询并且停止搜索,不检查正则表达式。
[ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配任何以gif, jpg, or jpeg结尾的文件,但是所有 /images/ 目录的请求将在Configuration C中处理。
[ configuration D ]
}
语法:resolver_timeout time
默认值:30s
使用字段:http, server, location
解析超时时间。如:
resolver_timeout 5s;
语法:root path
默认值:root html
使用字段:http, server, location ,location中的if字段
请求到达后的文件根目录。
下例中:
location /i/ {
root /spool/w3;
}
如果请求"/i/top.gif"文件,nginx将转到"/spool/w3/i/top.gif"文件。你可以在参数中使用变量。
注意:在请求中root会添加这个location到它的值后面,即"/i/top.gif"并不会请求"/spool/w3/top.gif"文件,如果要实现上述类似于apache alias的功能,可以使用alias指令。
语法:server {…}
默认值:no
使用字段:http
server字段包含虚拟主机的配置。
没有明确的机制来分开基于域名(请求中的主机头)和基于IP的虚拟主机。
可以通过listen指令来指定必须连接到这个server块的所有地址和端口,并且在server_name指令中可以指定所有的域名。
语法:server_name name [… ]
默认值:server_name hostname
使用字段:server
这个指令有两个作用:
·将HTTP请求的主机头与在nginx配置文件中的server{…}字段中指定的参数进行匹配,并且找出第一个匹配结果。这就是如何定义虚拟主机的方法,域名遵循下述优先级规则:
1、完整匹配的名称。
2、名称开始于一个文件通配符:.example.com。
3、名称结束于一个文件通配符:www.example.。
4、使用正则表达式的名称。
如果没有匹配的结果,nginx配置文件将安装以下优先级使用[#server server { … }]字段:
1、listen指令被标记为default的server字段。
2、第一个出现listen(或者默认的listen 80)的server字段。
·如果server_name_in_redirect被设置,这个指令将用于设置HTTP重定向的服务器名。
例:
server {
server_name example.com www.example.com;
}
第一个名称为服务器的基本名称,默认名称为机器的hostname。
当然,可以使用文件通配符:
server {
server_name example.com *.example.com www.example.*;
}
上述例子中的前两个名称可以合并为一个:
server {
server_name .example.com;
}
同样可以使用正则表达式。名称前面加“~”:
server {
server_name www.example.com ~^www\d+\.example\.com$;
}
这个模块为后端的服务器提供简单的负载均衡(轮询(round-robin)和连接IP(client IP))
如下例:
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix:/tmp/backend3;
}
server {
location / {
proxy_pass http://backend;
}
}
语法:ip_hash
默认值:none
使用字段:upstream
这个指令将基于客户端连接的IP地址来分发请求。
哈希的关键字是客户端的C类网络地址,这个功能将保证这个客户端请求总是被转发到一台服务器上,但是如果这台服务器不可用,那么请求将转发到另外的服务器上,这将保证某个客户端有很大概率总是连接到一台服务器。
无法将权重(weight)与ip_hash联合使用来分发连接。如果有某台服务器不可用,你必须标记其为“down”,如下例:
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com down;
server backend4.example.com;
}
语法:server name [parameters]
默认值:none
使用字段:upstream
指定后端服务器的名称和一些参数,可以使用域名,IP,端口,或者unix socket。如果指定为域名,则首先将其解析为IP。
·weight = NUMBER - 设置服务器权重,默认为1。
·max_fails = NUMBER - 在一定时间内(这个时间在fail_timeout参数中设置)
检查这个服务器是否可用时产生的最多失败请求数,默认为1,将其设置为0可以关闭检查,
这些错误在proxy_next_upstream或fastcgi_next_upstream
(404错误不会使max_fails增加)中定义。
·fail_timeout = TIME - 在这个时间内产生了max_fails所设置大小的失败尝试连接
请求后这个服务器可能不可用,同样它指定了服务器不可用的时间
(在下一次尝试连接请求发起之前),默认为10秒,fail_timeout与前端响应时间没有
直接关系,不过可以使用proxy_connect_timeout和proxy_read_timeout来控制。
·down - 标记服务器处于离线状态,通常和ip_hash一起使用。
·backup - (0.6.7或更高)如果所有的非备份服务器都宕机或繁忙,
则使用本服务器(无法和ip_hash指令搭配使用)。
示例配置
upstream backend {
server backend1.example.comweight=5;
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
}
注意:如果你只使用一台上游服务器,nginx将设置一个内置变量为1,即max_fails和fail_timeout参数不会被处理。
结果:如果nginx不能连接到上游,请求将丢失。
解决:使用多台上游服务器。
语法:upstream name { … }
默认值:none
使用字段:http
这个字段设置一群服务器,可以将这个字段放在proxy_pass和fastcgi_pass指令中作为一个单独的实体,它们可以可以是监听不同端口的服务器,并且也可以是同时监听TCP和Unix socket的服务器。
服务器可以指定不同的权重,默认为1。
示例配置
upstream backend {
server backend1.example.com weight=5;
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
}
这个模块提供简单的基于主机的访问控制。
ngx_http_access_module这个模块可以详细的检查客户端IP,并且按顺序执行第一条匹配的规则。
如下例:
location / {
deny192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
denyall;
}
上面的例子中仅允许192.168.1.0/24和10.1.1.0/16网络段访问,但192.168.1.1是个例外。
如果要实施很多复杂的规则,那么最好使用GeoIP module模块。
语法:allow [ address | CIDR | all ]
默认值:no
使用字段:http, server, location, limit_except
指令指定了允许访问的IP或网络段。
语法:deny [ address | CIDR | all ]
默认值:no
使用字段:http, server, location, limit_except
指令指定了拒绝访问的IP或网络段。
·提示和技巧
HttpAccess模块可以和error_page指令搭配使用来重定向一个未经验证的访问请求。
error_page 403 http://example.com/forbidden.html;
location / {
deny192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
denyall;
}
当我们网站并发量高的时候,一台tomcat无法承受大量并发,可以考虑Nginx+Tomcat集群来实现。咱们这就做一个集群演示。
我们这里准备3台tomcat,端口分别是8081、8082、8083,针对同一个域名,每次用Nginx实现不同的转发,分别在每个tomcat的webapps目录下创建ROOT目录,并创建index.html,分别在html的body里标记1/2/3以示区分。
下载:https://tomcat.apache.org/download-80.cgi
拷贝文件到目录下,解压,重命名并复制三份
修改tomcat1端口分别为8015,8081,8019
vi /usr/local/server/tomcats/tomcat1/conf/server.xml
修改tomcat2端口分别为8025,8082,8029
vi /usr/local/server/tomcats/tomcat2/conf/server.xml
修改tomcat3端口分别为8035,8083,8039
vi /usr/local/server/tomcats/tomcat3/conf/server.xml
进入tomcat1删除webapps下的文件,创建ROOT文件夹并添加html文件
<html>
<head>tomcat1head>
<body>
tomcat1
body>
html>
以同样的方式修改tomcat2和tomcat3
修改nginx.conf配置文件
upstream clustertomcat{
server 192.168.126.129:8081 weight=5;
server 192.168.126.129:8082 weight=1;
server 192.168.126.129:8083 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://clustertomcat;
}
}
加载配置文件
[root@localhost sbin]# cd /usr/local/server/nginx/sbin/
[root@localhost sbin]# ./nginx
[root@localhost sbin]# ./nginx -s reload
访问地址:由于tomcat1配置的权重是5,所以每次访问得到tomcat1的几率更大
针对任何站点,几乎都要访问图片,而一个网页里面几乎有好些张图片,这时候会占据大量tomcat连接,造成大量并发,我们可以通过Nginx配置直接访问硬盘里的图片,绕开tomcat。
我们在创建一个/usr/local/server/nginx_images/images目录,然后在images目录放入一些图片,再在nginx的nginx.conf配置里配置一个虚拟机来访问。
server {
listen 80;
server_name localhost;
#所有带有images访问的路径直接在/usr/local/server/nginx_images目录下查找
location / {
root /usr/local/server/nginx_images;
}
}
启动nginx并加载配置
[root@localhost sbin]# cd /usr/local/server/nginx/sbin/
[root@localhost sbin]# ./nginx
[root@localhost sbin]# ./nginx -s reload
测试访问成功:
再牛逼的软件我们也不能保证它一定不挂,为了防止Nginx挂了导致整个服务无法使用的灾难发生,我们这里可以考虑使用Keepalived+Nginx集群实现高可用。
VIP | IP | 主机名 | 主从
| 192.168.126.129 | keep129 | master
192.168.126.131 |------------------|-----------------|--------------
| 192.168.126.130 | keep130 | backup
克隆虚拟机并设置静态ip参考以下链接
https://blog.csdn.net/weixin_47314924/article/details/128378223
在129和130虚拟机上安装nginx,安装过程参考前面学的Nginx。
cd /usr/local/server/
mkdir nginx-keepalived #创建文件夹
cp nginx-1.23.3.tar.gz /usr/local/server/nginx-keepalived #拷贝文件
cd nginx-keepalived
tar -xf nginx-1.23.3.tar.gz #解压
mkdir nginx
./configure --prefix=/usr/local/server/nginx-keepalived/nginx
make && make install #安装
下载地址:https://www.keepalived.org/download.html
将文件上传到服务器,然后解压安装
#下载离线安装包,下载地址,并把安装包上传到服务器上并解压
# cp keepalived-2.2.7.tar.gz /usr/local/server/keepalived-2.2.7.tar.gz
# cd /usr/local/server
# tar -zxvf keepalived-2.2.7.tar.gz
# mkdir keepalived
#进入安装包中,进行编译及安装
# cd keepalived-2.2.7
# ./configure --prefix=/usr/local/server/keepalived --sysconf=/etc
# make && make install
生成以下几个文件,这样keepalived我们就安装好了
#进入:cd /etc/keepalived
#把keepalived.conf.sample删除
cd /etc/keepalived/
rm -rf keepalived.conf.sample
编辑hosts 添加主机名
vi /etc/hosts
找到129主机keepalived的配置文件keepalived.conf
#重新创建keepalived.conf
cd /etc/keepalived
vi keepalived.conf
添加内容:
global_defs {
router_id keep129;
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 129
mcast_src_ip 192.168.126.129
priority 100
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.126.131
}
}
编辑hosts 添加主机名
vi /etc/hosts
注意
:从节点跟主节点一样需要安装和配置nginx和keepalived
找到130主机keepalived的配置文件keepalived.conf
#重新创建keepalived.conf
cd /etc/keepalived
vi keepalived.conf
global_defs {
router_id keep130;
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 130
mcast_src_ip 192.168.126.130
priority 90
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.126.131
}
}
分别在机器129,130的 /etc/keepalived目录下创建nginx_check.sh文件
#!/bin/bash
A ='ps -C nginx --no-header | wc -l'
# 判断nginx是否宕机,如果宕机了,尝试重启
if [ $A -eq 0 ];then
# nginx位置
/usr/local/server/nginx-keepalived/nginx/sbin
# 等待3秒再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机
sleep 3
if [ 'ps -C nginx --no-header | wc -l' -eq 0 ]; then
killall keepalived
fi
fi
修改nginx下的index.html文件
[root@localhost html]# cd /usr/local/server/nginx-keepalived/nginx/html
[root@localhost html]# ll
总用量 8
-rw-r--r--. 1 root root 497 2月 7 17:03 50x.html
-rw-r--r--. 1 root root 617 2月 7 18:16 index.html
[root@localhost html]# vi index.html
129服务器 修改 Welcome to nginx-1!
130服务器 修改 Welcome to nginx-2!
关闭防火墙,同时启动主机和备机的nginx和keepalived
systemctl stop firewalld 关闭防火墙
firewall-cmd --state 查看防火墙状态
启动129 nginx和keepalived
[root@localhost html]# cd /usr/local/server/nginx-keepalived/nginx/sbin/
[root@localhost sbin]# ./nginx
[root@localhost sbin]# cd /usr/local/server/keepalived/sbin/
[root@localhost sbin]# ./keepalived
[root@localhost sbin]# ps -ef|grep keepalived
root 18049 1 0 18:20 ? 00:00:00 ./keepalived
root 18050 18049 0 18:20 ? 00:00:00 ./keepalived
root 18097 9304 0 18:21 pts/1 00:00:00 grep --color=auto keepalived
启动130 nginx和keepalived
浏览器访问地址:http://192.168.126.131
, 可知此时访问的是主服务器的nginx
[root@localhost sbin]# ps -ef|grep keepalived
root 18049 1 0 18:20 ? 00:00:00 ./keepalived
root 18050 18049 0 18:20 ? 00:00:00 ./keepalived
root 18097 9304 0 18:21 pts/1 00:00:00 grep --color=auto keepalived
[root@localhost sbin]# kill -9 18049
[root@localhost sbin]# cd /usr/local/server/nginx-keepalived/nginx/sbin/
[root@localhost sbin]# ./nginx -s quit
再次刷新浏览器,可知此时访问的是从服务器的nginx
global_defs {
## keepalived 自带的邮件提醒需要开启 sendmail 服务。建议用独立的监控或第三方 SMTP
router_id keep130 ## 标识本节点的字条串,通常为 hostname
}
## keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级。如果
脚本执行结果为 0,并且 weight 配置的值大于 0,则优先级相应的增加。如果脚本执行结果非 0,并且 weight
配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中 priority 对应
的值。
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
interval 2 ## 检测时间间隔
weight -20 ## 如果条件成立,权重-20
}
## 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state MASTER ## 主节点为 MASTER,对应的备份节点为 BACKUP
interface eth1 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同,我的是 eth1
virtual_router_id 130 ## 虚拟路由的 ID 号,两个节点设置必须一样,可选 IP 最后一段使用, 相
同的 VRID 为一个组,他将决定多播的 MAC 地址
mcast_src_ip 192.168.211.130 ## 本机 IP 地址
priority 100 ## 节点优先级,值范围 0-254,MASTER 要比 BACKUP 高
nopreempt ## 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1 ## 组播信息发送间隔,两个节点设置必须一样,默认 1s
## 设置验证信息,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111 ## 真实生产,按需求对应该过来
}
## 将 track_script 块加入 instance 配置块
track_script {
chk_nginx ## 执行 Nginx 监控的服务
}
## 虚拟 IP 池, 两个节点设置必须一样
virtual_ipaddress {
192.168.199.131 ## 虚拟 ip,可以定义多个
}
}