ngnix+keepalive负载均衡搭建

3.7 负载均衡搭建

3.7.1 环境架构

ngnix+keepalive负载均衡搭建_第1张图片

3.7.1 nginx环境架构图

 

3.7.2 安装依赖包

命令:

#yum -y install gcc pcre-devel zlib-devel openssl-devel

 

3.7.3 上传NginxKeepalived安装包至服务器

将nginx-1.6.2.tar.gz和keepalived-1.2.12.tar.gz上传到两台负载均衡服务器/app目录下。

 

3.7.4 安装Nginx

1. 解压安装包,命令:

#tar –zxvf nginx-1.6.2.tar.gz

 

2. 进入nginx-1.6.2文件夹,命令:

#cd /app/nginx-1.6.2

 

3.配置安装软件,命令:

#./configure --with-http_stub_status_module

 

    

    4.编译及安装,命令:

#make && make install

 

3.7.5 安装Keepalived

1. 解压安装包,命令:

# tar –zxvf keepalived-1.2.12.tar.gz

 

2. 进入nginx-1.6.2文件夹,命令:

# cd keepalived-1.2.12

 

3. 配置安装软件,命令:

#./configure

 

4.编译及安装,命令:

#make && make install

 

5. 新增keepalived服务,命令:

#cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

 

#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

 

#mkdir /etc/keepalived

 

#cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

 

#cp /usr/local/sbin/keepalived /usr/sbin/

 

3.7.6 配置Nginx

两台接入服务器的NginX的配置完全一样,修改如下nginx.conf配置文件并替换至服务器usr/local/nginx/conf目录下的nginx.conf文件。

 

注意:

负载均衡配置为HTTPWeb Services协议,主要包括Portal访问IP及端口和系统HTTPWeb Services协议使用的DIP IP和端口。

DIPNginx部署同一台服务器时,请注意保持Nginx代理端口和DIP端口的不一致,即Nginx配置文件中upstreamserver配置部分的端口不能一致。

 

3.7.7 配置Keepalived

安装服务器分为主服务器和从服务器,主从两台服务器的keepalived配置文件有所不同。

1.配置主服务器的配置文件

修改如下keepalived-master.conf配置文件内容及更改文件名称为keepalived.conf,然后替换master服务器/etc/keepalived目录下keepalived.conf。

 

2.配置从服务器的配置文件

修改如下keepalived-backup.conf配置文件内容及更改文件名称为keepalived.conf,然后替换master服务器/etc/keepalived目录下keepalived.conf。

 

3.验证

1先后在主、从服务器上启动keepalived: #/etc/init.d/keepalived start

2在主服务器上查看是否已经绑定了虚拟IP: #ip addr,如图3.7.7-1所示,192.168.0.63为绑定的虚拟IP地址。

 ngnix+keepalive负载均衡搭建_第2张图片

3.7.7-1 绑定虚拟IP地址

3停止主服务器上的keepalived: #/etc/init.d/keepalived stop 然后在从服务器上查看是否已经绑定了虚拟IP

4启动主服务器上的keepalived,看看主服务器能否重新接管虚拟IP

 

3.7.8 添加监控脚本

    Keepalived支持配置监控脚本,监控Nginx状态。这里使用nmapnginx端口来判断nginx的状态

1.安装nmap软件,命令:

上传nmap-4.76-1.x86_64.rpm至两台服务器的/app目录

安装软件:#rpm –ivh nmap-4.76-1.x86_64.rpm

 

2.修改如下chk_nginx.sh监控脚本,并上传至两台服务器的/opt目录下。

 

3.7.9 验证测试

1.分别启动主、从服务器的nginxkeepalived服务。注意先启动nginx服务,后启动keepalived服务,命令:

进入/usr/local/nginx/sbin目录,#cd /usr/local/nginx/sbin

启动nginx服务,#./nginx

启动keepalived服务,#/etc/init.d/keepalived start

 

2. 主服务器测试

1VIP访问Portal:谷歌浏览器地址栏输入地址:http://VIP:端口/integrator/index.shtml。如keepalived配置文件配置的VIP192.168.0.63nginx配置监听端口为8080,则访问地址为:http://192.168.0.63:8080/integrator/index.shtml,查看是否能够成功加载Portal首页,若能成功加载则nginx+keepalived配置成功;

2VIP访问DIP:系统配置一条HTTP-LOCAL的流程,并成功部署。用火狐插件httprequest或者soapui,推送报文。推送HTTP URLhttp://VIP:通讯网关配置端口/通道配置路径。观察报文监控,是否有成功处理,若成功处理,则nginx+keepalived配置dip负载均衡部分配置成功。

 

3.从服务器测试

停止主服务器的nginx服务,同3.7.9 2.主服务器测试。若均能访问,则说明当nginx主服务器挂掉时,能自动成功切换至从服务器的nginx,且监控脚本起作用。



附件:

1、ngnix配置文件

#启动进程,通常设置成和cpu的数量相等
worker_processes  1;

#工作模式及连接数上限
events {
	use   epoll;				#epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
    worker_connections  1024;	#单个后台worker process进程的最大并发链接数
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
	#设定mime类型,类型由mime.type文件定义
    include       mime.types;
    default_type  application/octet-stream;
	
	#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
    #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    #tcp_nopush     on;

	#连接超时时间
    #keepalive_timeout  0;
    keepalive_timeout  65;

	#设定负载均衡的服务器列表
    upstream portal {
		ip_hash; #将IP请求定向至同一台后端。
		#本机开启端口
		server 192.168.80.2:8080;
		server 192.168.80.3:8080;
    }
	
    server {
		#侦听8081端口
        listen       8081;
		#定义使用www.xx.com访问
        server_name  b2b.integrator.com;

		#默认请求
        location / {
           proxy_set_header Host $host:8081;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass http://portal; #请求转向portal定义的服务器列表,名称需唯一
		}  
    }
	
}


2、keepalive主服务器配置

global_defs {
	notification_email {			#指定keepalived在发生切换时需要发送email到的对象,一行一个
        [email protected]
   }

   notification_email_from [email protected]	 #指定发件人
   smtp_server smtp.sinoservices.com						 #指定smtp服务器地址
   smtp_connect_timeout 30									 #指定smtp连接超时时间
   router_id nginx_master									 #运行keepalived机器的一个标识

}

#前面定义的后备的负载均衡服务器名称
vrrp_instance VI_1 {
	#只有MASTER和BACKUP 两种状态,都必须大写。
    state MASTER
	#进行通信的端口
    interface eth0
    
	#同一个vrrp实例的唯一标识。即同一个vrrp_stance,MASTER和BACKUP的virtual_router_id是一致的。在整个vrrp内也唯一。
	virtual_router_id 51
    #权重,数值越大,权重越大。MASTER大于SLAVE
	priority 101
	
	#MASTER和SLAVE负载均衡器之间同步检查的时间间隔。单位是:秒
    advert_int 1
	
	#MASTER和SLAVE的认证方式
    authentication {
        auth_type PASS
        auth_pass 1111
    }
	
	#VIP
    virtual_ipaddress {
        192.168.80.6
    }
}

virtual_server 192.168.80.6 8080 {
     delay_loop 2   #每个2秒检查一次real_server状态
     lb_algo wrr   #LVS算法
     lb_kind DR    #LVS模式
     persistence_timeout 60   #会话保持时间
     protocol TCP
     real_server 192.168.0.75 8081 {
     weight 3
     notify_down /opt/chk_nginx.sh  #检测到服务down后执行的脚本
     TCP_CHECK {
     connect_timeout 10    #连接超时时间
     nb_get_retry 3       #重连次数
     delay_before_retry 3   #重连间隔时间
     connect_port 8080   #健康检查端口
    }
  }
}

3、keepalive从服务器配置

global_defs {
notification_email {					#指定keepalived在发生切换时需要发送email到的对象,一行一个
       [email protected]
   }

   notification_email_from [email protected]	#指定发件人
   smtp_server smtp.sinoservices.com						#指定smtp服务器地址
   smtp_connect_timeout 30									#指定smtp连接超时时间
   router_id nginx_backup									#运行keepalived机器的一个标识

}

#前面定义的后备的负载均衡服务器名称
vrrp_instance VI_1 {
	#只有MASTER和BACKUP 两种状态,都必须大写。
    state BACKUP
	#进行通信的端口
    interface eth0
	
	#同一个vrrp实例的唯一标识。即同一个vrrp_stance,MASTER和BACKUP的virtual_router_id是一致的。在整个vrrp内也唯一。
    virtual_router_id 51
    #权重,数值越大,权重越大。MASTER大于SLAVE
    priority 99
	
	#MASTER和SLAVE负载均衡器之间同步检查的时间间隔。单位是:秒
    advert_int 1
	
	#MASTER和SLAVE的认证方式
    authentication {
        auth_type PASS
        auth_pass 1111
    }
	
	#VIP
    virtual_ipaddress {
        192.168.80.6
    }
}

virtual_server 192.168.80.6 8080 {
     delay_loop 2   #每个2秒检查一次real_server状态
     lb_algo wrr   #LVS算法
     lb_kind DR    #LVS模式
     persistence_timeout 60   #会话保持时间
     protocol TCP
     real_server 从nginx服务器IP 对应服务端口 {
     weight 3
     notify_down /opt/chk_nginx.sh  #检测到服务down后执行的脚本
     TCP_CHECK {
     connect_timeout 10    #连接超时时间
     nb_get_retry 3       #重连次数
     delay_before_retry 3   #重连间隔时间
     connect_port 从nginx服务对应端口   #健康检查端口
    }
  }
}



你可能感兴趣的:(Nginx,Linux)