1、概述
前面我们聊过使用 Nginx 为 后端Tomcat 做负载均衡、高可用,但是这时Nginx又成了单点,如果Nginx不幸挂掉,整个网站便无法访问。
此时我们就会用到另一个软件 —— Keepalived。
Keepalived 是一个用 C 编写的路由软件,Keepalived 会生成一个虚拟IP,此虚拟IP与多台真实的服务器的IP绑定,当用户发来请求到虚拟IP时,请求先路由到主服务器,当主服务器宕机后,请求会路由到备用服务器,以达到高可用的目的。
理论上两台或多台Nginx服务器的硬件配置应该一致,这样路由改变时,性能不会有太大的差别。
下面我们用一个例子,来实际操作一下。
2、场景说明
在两台服务器上,安装Nginx,并启动。
在两台服务器上安装Keepalived,进行配置,为Nginx做负载均衡,实现双机主备高可用。
A服务器配置为主机,B服务器配置为备机。
虚拟IP:192.168.1.88
A服务器IP(主):192.168.1.144
B服务器IP(备):192.168.1.22
3、安装Keepalived
在两台服务器上都需要安装Keepalived。
1)下载Keepalived
可以到Keepalived官网(https://www.keepalived.org)下载
图片来源于官网
图片来源于官网
2)将Keepalived压缩包,拷贝到两台服务器的 /home 目录下
3)解压Keepalived压缩包
在Linux系统执行 # tar -zxvf keepalived-2.2.4.tar.gz 命令进行解压。
4)安装依赖包
# yum -y install libnl libnl-devel
# yum install -y openssl openssl-devel
5)进入解压后的Keepalived目录
6)执行配置命令
# ./configure --prefix=/usr/local/keepalived --sysconf=/etc
7)执行编译并安装命令
# make && make install
8)安装成功后,在 /etc/keepalived 目录下,会看到 keepalived.conf 文件。
4、配置 keepalived.conf 文件
进入 /etc/keepalived 目录下,修改 keepalived.conf 文件。
A服务器配置如下:
! Configuration File for keepalived global_defs { # 全局唯一的主机标识 router_id server_a } vrrp_instance VI_1 { # 标识是主节点还是备用节点,值为 MASTER 或 BACKUP state MASTER # 绑定的网卡 interface ens33 # 虚拟路由id,保证主备节点是一致的 virtual_router_id 51 # 权重 priority 100 # 同步检查时间,间隔默认1秒 advert_int 1 # 认证授权的密码,所有主备需要一样 authentication { auth_type PASS auth_pass 1111 } # 虚拟IP virtual_ipaddress { 192.168.1.88 } }
B服务器配置如下:
! Configuration File for keepalived global_defs { router_id server_b } vrrp_instance VI_1 { # 设置为备机 state BACKUP interface ens33 virtual_router_id 51 # 权重设置的要比主机低 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } # 虚拟IP需要主备设置成一样 virtual_ipaddress { 192.168.1.88 } }
5、启动Keepalived
1)进入 /usr/local/keepalived/sbin 目录
2)输入命令 # ./keepalived 即可。
此时,查看网卡,会发现主机的IP地址多了 192.168.1.88
6、停止A服务器,看虚拟IP是否路由到B服务器
经试验可知,A服务器关闭后,虚拟IP便路由到了B服务器。
7、综述
好了,至此,Keepalived的双机主备机制已经实现了。后面我们还会介绍Keepalived双主热备的配置方式。
希望大家多多留言交流,共同进步。