目录
一、前期准备工作
1. 需要两台银河麒麟V10 SP2服务器
二、服务器Nginx1安装部署nginx+keepalived
1. 查看服务器nginx1相关信息
2. 在服务器nginx1上安装部署nginx软件
3. 在服务器Nginx1上安装部署keepalived,通过yum源来安装
三、服务器Nginx2安装部署nginx+keepalived (步骤和第二步类似)
1. 查看服务器nginx2相关信息
2. 在服务器nginx2上安装部署nginx软件
3. 在服务器Nginx2上安装部署keepalived,通过yum源来安装
四、发现问题,两台服务器上都有VIP
1. 那访问VIP,到底是访问哪一台服务器了
2. 查看两台服务器的ip信息
五、测试VIP是否漂移,是否能做到双机热备
1. 服务器Nginx1宕机了,VIP是否能到服务器Nginx2上
2. 去服务器Nginx2上查看ip信息
3. web页面测试
服务器名 |
IP地址 |
操作系统 |
应用软件 |
Nginx1 |
192.168.174.145 |
Kylin Linux Advanced Server release V10 (SP2) |
Nginx+keepalived |
Nginx2 |
192.168.174.181 |
Kylin Linux Advanced Server release V10 (SP2) |
Nginx+keepalived |
客户端机器 |
192.168.174.1 |
Win10 |
|
VIP地址 |
192.168.174.144 |
我们可以通过yum源来安装,如果服务器可以上外网,可以通过外网源来安装,如果服务器不能上外网可以挂载操作系统光盘镜像,然后配置本地源来安装
2.1 查看外网yum源配置
2.2 通过外网源来安装nginx,yum install -y nginx
2.3 启动nginx,查看进程和监听端口
2.4 开通防火墙端口,查看了下防火墙已经开通http和https服务
root@nginx1 ~]# firewall-cmd --list-services
cockpit dhcpv6-client dns http https kerberos kpasswd ldap ldaps mdns ntp ssh
2.5 通过客户端机器浏览器访问http://192.168.174.145,访问正常,nginx安装部署成功
3.1 修改配置文件
vim /etc/keepalived/keepalived.conf 重点修改一下配置
vrrp_instance VI_1 {
# 备份服务器上将 MASTER 改为 BACKUP 必须大写
state MASTER
#网卡
interface ens33
# 主、备机的 virtual_router_id 必须相同
virtual_router_id 51
# 主、备机取不同的优先级,主机值较大,备份机值较小
priority 100
# 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔,单位为秒,两个节点设置必须一样
advert_int 1
# 设置验证类型和密码,两个节点必须一致
authentication {
auth_type PASS
auth_pass Kylin.123
}
# VRRP H 虚拟地址也就VIP
virtual_ipaddress {
192.168.174.144
}
}
3.2 启动keepalived服务 systemctl start keepalived.service,查看VIP是否生成,VIP已经生成,并绑定在网卡ens33下。
我们可以通过yum源来安装,如果服务器可以上外网,可以通过外网源来安装,如果服务器不能上外网可以挂载操作系统光盘镜像,然后配置本地源来安装
2.1 查看外网yum源配置
2.2 通过外网源来安装nginx,yum -y install nginx
2.3 启动nginx,查看进程和监听端口
2.4 开通防火墙端口,查看了下防火墙已经开通http和https服务
root@nginx2 ~]# firewall-cmd --list-services
cockpit dhcpv6-client dns http https kerberos kpasswd ldap ldaps mdns ntp ssh
2.5 通过客户端机器浏览器访问http://192.168.174.181,访问正常,nginx安装部署成功
3.1 修改配置文件
vim /etc/keepalived/keepalived.conf 重点修改一下配置
vrrp_instance VI_1 {
# 备份服务器为 BACKUP 必须大写(与第一台服务器配置的差异)
state BACKUP
#网卡
interface ens33
# 主、备机的 virtual_router_id 必须相同
virtual_router_id 51
# 主、备机取不同的优先级,主机值较大,备份机值较小,(备机配置的差异)
priority 99
# 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔,单位为秒,两个节点设置必须一样
advert_int 1
# 设置验证类型和密码,两个节点必须一致
authentication {
auth_type PASS
auth_pass Kylin.123
}
# VRRP H 虚拟地址也就VIP
virtual_ipaddress {
192.168.174.144
}
}
3.2 启动keepalived服务 systemctl start keepalived.service,查看VIP是否生成,VIP已经生成,并绑定在网卡ens33下。
这是由于两台keepalived服务器之间是通过vrrp来通信和协商的,由于防火墙开启了,没有允许vrrp协议通过,只需要防火墙开启策略允许vrrp协议通过即可。
firewall-cmd --add-protocol=vrrp --permanent
firewall-cmd --reload
2.1 发现VIP只在MASTER主机下,也就是服务器Nginx1上。截图如下
2.2 服务器Nginx2上是没有VIP的,截图如下
我们把服务器Nginx1上的网络停掉,模拟宕机,看VIP是否漂移到服务器Nginx2上。
我们可以看到vip已经漂移到服务器Nginx2上了,这样就能保证我们的业务不被中断。
3.1 为了测试方便,我们把nginx默认访问的页面改下
cd /usr/share/nginx/html
vim index.html
内容改成各自的ip
3.2 然后我们通过浏览器使用vip来访问,也可以通过域名,把域名解析到这个vip上,然后通过域名访问
我们这里演示通过vip来访问,发现访问的是服务器Nginx1的默认页面
我们把服务器Nginx1宕机,再通过VIP访问,发现访问的是服务器Nginx2的默认页面,说明完成VIP漂移
总结:如果服务器Nginx1和Nginx2默认页面一样,部署的web页面代码完全一样的话,这样就保证了业务系统不会中断,相当于有两套业务系统。
3.3 我们改下两台服务器,nginx的默认页面内容,如下:
3.4 然后再通过vip去访问页面,发现访问页面始终都是一样的,而且就算有一台服务器宕机,业务系统也不会中断
3.5 当然如果我们开发的比较复杂的业务系统,也可以实现双机热备,防止业务系统中断。
我们可以使用nginx的反向代理功能,转发后后台真正的业务系统,比如通过java开发的业务系统,我们可以反向代理tomcat,下一期我们再讲到。