1. nginx部署
单机部署可参考:https://blog.csdn.net/ym5209999/article/details/119897237
主备模式可参考:https://blog.csdn.net/ym5209999/article/details/132983080
2. keepalived安装
[root@nginx1 ~]# yum -y install keepalived
3. keepalived配置
3.1 安装完成后,默认配置文件位于:/etc/keepalived,默认配置如下:
keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16
192.168.200.17
192.168.200.18
}
}
virtual_server 192.168.200.100 443 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.201.100 443 {
weight 1
SSL_GET {
url {
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.10.10.2 1358 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
sorry_server 192.168.200.200 1358
real_server 192.168.200.2 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.3 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.10.10.3 1358 {
delay_loop 3
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.200.4 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.5 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
删除默认配置,以下述模板,按实际情况填写
3.2 按实际情况修改keepalived.conf
nginx1
! Configuration File for keepalived
global_defs {
# 路由ID,当前主机标识,必须唯一
router_id LVS_DEVEL_14
script_user root
enable_script_security
}
vrrp_instance VI_1 {
# 状态,可配置内容为:MASTER/BACKUP
state MASTER
# 网卡名称
interface ens32
# 主备节点需保持一致
virtual_router_id 51
# 优先级,当主节点宕机后,优先级最高的成为主节点
priority 100
# 主备同步时间间隔
advert_int 1
# 认证授权密码
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.32.12
}
}
vrrp_instance VI_2 {
# 状态,可配置内容为:MASTER/BACKUP
state BACKUP
# 网卡名称
interface ens32
# 主备节点需保持一致
virtual_router_id 52
# 优先级,当主节点宕机后,优先级最高的成为主节点
priority 90
# 主备同步时间间隔
advert_int 1
# 认证授权密码
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.32.13
}
}
nginx2
! Configuration File for keepalived
global_defs {
# 路由ID,当前主机标识,必须唯一
router_id LVS_DEVEL_15
script_user root
enable_script_security
}
vrrp_instance VI_1 {
# 状态,可配置内容为:MASTER/BACKUP
state BACKUP
# 网卡名称
interface ens32
# 主备节点需保持一致
virtual_router_id 51
# 优先级,当主节点宕机后,优先级最高的成为主节点
priority 90
# 主备同步时间间隔
advert_int 1
# 认证授权密码
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.32.12
}
}
vrrp_instance VI_2 {
# 状态,可配置内容为:MASTER/BACKUP
state MASTER
# 网卡名称
interface ens32
# 主备节点需保持一致
virtual_router_id 52
# 优先级,当主节点宕机后,优先级最高的成为主节点
priority 100
# 主备同步时间间隔
advert_int 1
# 认证授权密码
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.32.13
}
}
4. 启动验证
# 启动nginx
[root@nginx1 ~]# /apps/nginx/sbin/nginx –c /apps/nginx/conf/nginx.conf
# 启动keepalived
[root@nginx1 ~]# systemctl start keepalived
1.nginx1启动keepalived之后,nginx1服务器上显示两个IP:VIP1、nginx1服务器实体IP
2.nginx2启动keepalived之后,nginx2服务器上显示两个IP:VIP2、nginx2服务器实体IP
3.nginx1停止keepalived、nginx2正常启动keepalived,nginx2服务器上显示三个IP:VIP1、VIP2、nginx2服务器实体IP
4.nginx2停止keepalived、nginx1正常启动keepalived,nginx1服务器上显示三个IP:VIP1、VIP2、nginx1服务器实体IP