高可用linux 服务器搭建

  • 高可用linux 服务器搭建已关闭评论
  • 181 次浏览
  • A+
所属分类:linux技术
摘要

最原始的服务部署,为单点部署,即直接把服务部署在一个服务器上。如果服务器出现故障,或者服务因为某个异常而挂掉,则服务就会发生中断。单点部署出现故障的概率最高。

最原始的服务部署,为单点部署,即直接把服务部署在一个服务器上。如果服务器出现故障,或者服务因为某个异常而挂掉,则服务就会发生中断。单点部署出现故障的概率最高。

后来,出现了网关,比如 nginx kong 等。如下图所示:
高可用linux 服务器搭建

这样,所有客户请求都会经过网关,再由网关转发到各个服务。如果由服务出现故障,则网关会自动跳过故障服务,把请求分发到可用服务。因为网关只是起到服务转发的功能,所以网关出现故障的概率比应用出现故障的概率低很多。

 http  {    upstream myserver {      server   192.168.12.181:80 weight=3 max_fails=3 fail_timeout=20s;      server   192.168.12.182:80 weight=1 max_fails=3 fail_timeout=20s;      server   192.168.12.183:80 weight=4 max_fails=3 fail_timeout=20s;    }    server    {      listen       80;      server_name  www.domain.com 192.168.12.189;      index index.htm index.html;      root  /ixdba/web/wwwroot;  location / {      proxy_pass http://myserver;      proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;      include    /opt/nginx/conf/proxy.conf;      }    }  } 

但是,网关并非会永远不宕机,如果遭遇入侵,或者机房断电。网关服务出现故障,则不管下面的应用服务部署了多少个都没用。

于是就出现了第三种集群。如下图所示,借助keeplived部署2个以上的nginx 网关。这样网关出现故障导致服务中断的机率将大大降低。
高可用linux 服务器搭建

这里主从nginx服务的配置是一样的。
3.keepalive的配置:/etc/keepalived/keepalivec.conf
主节点(Master节点配置)

 (1)修改/etc/keepalived/keepalivec.conf 配置文件         global_defs {         	 notification_email {         		 acassen@firewall.loc         		 failover@firewall.loc         		 sysadmin@firewall.loc         	 }         	 notification_email_from Alexandre.Cassen@firewall.loc              #当前主机ip         	 smtp_server 192.168.17.129         	 smtp_connect_timeout 30         	 # 重点1:通过它,可以访问到主机,在hosts文件中,要做映射关系,类似于 127.0.0.1 LVS_DEVEL,host文件路径:/etc/hosts         	 router_id LVS_DEVEL           }                  #重点2:检测脚本,目的是定时执行,检测nginx的状态,如果挂了尝试重启,如果启动失败,则停止该节点的nginx和keepaive         vrrp_script chk_http_port {         	 script "/usr/local/src/nginx_check.sh"	 # 执行脚本所在的位置,自定义脚本后面会提及         	 interval 2 	#检测脚本执行的间隔,单位秒,每个2秒执行一次脚本         	 weight 2       #脚本执行满足,权重加2,这里其实没搞明白..         }          #重点3:主备节点的区别配置	         vrrp_instance VI_1 {         	 state MASTER	 # 备份服务器上将 MASTER 改为 BACKUP         	 interface ens33	 # 绑定的网卡,通过ipconfig查看         	 virtual_router_id 51	 # 主、备机的 virtual_router_id 必须相同         	 priority 100 	# 主、备机取不同的优先级,主机值较大,备份机值较小(比如主机100,备机90)         	 advert_int 1 	#每隔一秒发送一次心跳,确保从服务器(keepalive)是否还活着         	 authentication {		# 心跳检测需要的密码         		 auth_type PASS         		 auth_pass 1111          	}         	 virtual_ipaddress {             	 192.168.17.50 	# VRRP H 虚拟地址(重点:虚拟ip配置,客户端通过该ip进行访问,主节点和备用节点谁占有这个ip,谁提供反向代理服务)         	 }         }    (2)在/usr/local/src 添加检测脚本nginx_check.sh,检查Nginx是否还活着             #!/bin/bash             #查看ningx的进程号,并统计数量             A=`ps -C nginx –no-header |wc -l`             #等于0时,即nginx挂了,尝试重启             if [ $A -eq 0 ];then              /usr/local/nginx/sbin/nginx 	#Nginx启动命令的位置              sleep 2              #启动失败,杀掉keepalive              if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then              killall keepalived              fi             fi