8分钟实现nginx高可用机制

一、keepalived的基本概念

在上面的篇章中使用了Nginx代理多个web服务器,之后访问Nginx服务的ip就可以代理访问到真实的web服务器,但是如果你的这台Nginx服务器死掉(宕机),此时所有有该Nginx代理的所有web容器将会无法访问,此时需要配置多个Nginx服务器作为备用机,但是多个Nginx服务器之间需要一个组件来进行协调,我们可以使用Keepalived进行协调,Keepalived可以使用高可用机制,在很多第三方组件都是用到的,最大的特征就是可以使用路由功能的算法虚拟出一个新的Ip地址,之后使用这个Ip地址代理多个真实的服务器。

二、实现Keepalived的配置

1、下载keepalived安装包

下载地址:https://www.keepalived.org/download.html

2、上传到服务器并解压

scp eepalived-1.2.24.tar.gz root@xxx:/usr/local/src/ tar -xzvf keepalived-1.2.24.tar.gz -C /usr/local/src/

3、进入到keepalived的保存目录中

cd /usr/local/src/keepalived-1.2.24/

4、配置Keepalived的保存路径:

./configure –prefix=/usr/

5、编译及安装

make make install

如果此时配置成功的话在/usr/etc中出现相关的配置信息,以及会在/usr/sbin中出现启动的命令

6、对Keepalived进行虚拟路由的配置

root@ubuntu:/usr/etc# cd keepalived/ root@ubuntu:/usr/etc/keepalived# vim keepalived.conf global_defs { notification_email { [email protected] [email protected] [email protected] } notification_email_from [email protected] 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 {#虚拟路由的ip 192.168.239.250 } } virtual_server 192.168.239.250 80 { #对应上面虚拟路由的ip地址 delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP real_server 192.168.239.133 80 { #第一台nginx服务器的配置 weight 1 SSL_GET { url { path / #根路径下开始访问 status_code 200 #请求正常的时候开始访问 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } real_server 192.168.239.135 80 { #第二台Nginx服务配置 weight 1 SSL_GET { url { path / #根路径下开始访问 status_code 200 #请求正常的时候开始访问 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }

7、启动keepalived服务

root@ubuntu:/etc/keepalived# service keepalived start

8、查看keepalived的状态

service keepalived status

9、克隆一台新的nginx服务器,并且修改一下两个配置项

root@ubuntu:/usr/etc/keepalived# vim keepalived.conf global_defs { notification_email { [email protected] [email protected] [email protected] } notification_email_from [email protected] 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 BACKUP#备份机 interface eth0 virtual_router_id 51 priority 99 #优先级 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress {#虚拟路由的ip 192.168.239.250 } } virtual_server 192.168.239.250 80 { #对应上面虚拟路由的ip地址 delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP real_server 192.168.239.133 80 { #第一台nginx服务器的配置 weight 1 SSL_GET { url { path / #根路径下开始访问 status_code 200 #请求正常的时候开始访问 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } real_server 192.168.239.135 80 { #第二台Nginx服务配置 weight 1 SSL_GET { url { path / #根路径下开始访问 status_code 200 #请求正常的时候开始访问 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }

主要修改以下两个配置 state BACKUP#备份机 priority 99#优先级

10、浏览器使用虚拟ip访问Nginx服务器

以上访问的地址就是虚拟路由的ip地址

12、模拟宕机的情况

将Nginx的master机关机,如果可以正常访问,说明配置成功