KEEPALIVED1.2.12+ NGINX1.6.2 在CENTOS6.4实现负载均衡高可用部署手册

Posted 全球CTO俱乐部

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KEEPALIVED1.2.12+ NGINX1.6.2 在CENTOS6.4实现负载均衡高可用部署手册相关的知识,希望对你有一定的参考价值。

1. 前言

说明部署手册适用linux centos6.4或者rhel6.4  64位操作系统


1.1 部署拓朴

详细设置如下表:

服务器

说明

备注

192.168.10.11

 nginx-1.6.2.tar +  Keepalived-1.2.13服务器master


192.168.10.12

Nginx-1.6.2.tar +   Keepalived-1.2.13服务器 backup


192.168.10.13

Apache服务器


192.168.10.14

Apache服务器


192.168.10.50

虚拟VIP


1.2 需要使用的帐户

账号

说明

备注

Root

Linux系统超级用户




1.3简单原理

2. 部署实施

2.1 安装环境检查

确保在操作系统安装完毕之后,设置好yum源仓库,并能够连通互联网。

2.2 Nginx 安装及配置

l  在192.168.10.11、192.168.10.12 上,分别安装Nginx 。

下载nginx-1.6.2.tar源码,解压到“/usr/local/src”.

[root@localhost src]# pwd  

/usr/local/src

[root@localhost src]# wget http://nginx.org/download/nginx-1.6.2.tar.gz

[root@localhost src]# tar xf nginx-1.6.2.tar.gz

l  安装相关依赖和新建用户

yum -y install gcc gcc+ gcc-c++ openssl openssl-devel pcre pcre-devel

groupadd www

useradd www -M -s /sbin/nologin –g www

l  安装Nginx

[root@localhost nginx-1.6.2]#./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module--with-http_ssl_module

[root@localhost nginx-1.6.2]# make

[root@localhost nginx-1.6.2# makeinstall

l  修改192.168.10.11、192.168.10.12 上的Nginx 配置文件如下所示:

userwww www;            #nginx worker进程运行用户以及用户组

worker_processes8; #nginx worker数量

error_log  logs/error.log  notice; #全局错误日志文件

pid/usr/local/nginx/logs/nginx.pid; #指定主进程id的存储文件位置

worker_rlimit_nofile51200;    #指定一个nginx进程可以打开的最多文件描述符数目

events{

use epoll;   #linux 服务器的优点所在

worker_connections 51200;  #设定worker的最大连接数

}

http{

include mime.types;   #设定mime类型

default_type application/octet-stream;  #默认文件类型

log_formatmain '$remote_addr - $remote_user [$time_local] "$request" '

'$status$body_bytes_sent "$http_referer" '

'"$http_user_agent""$http_x_forwarded_for"';

access_log/usr/local/nginx/logs/access.log main;

sendfileon;

keepalive_timeout 65;  #长连接超时时间,单位是秒

client_header_buffer_size32k;

large_client_header_buffers4 32k;

client_max_body_size10m;

gzipon;                     #开启gzip压缩,用于支持在线实时压缩输出数据流

gzip_min_length1k;            #设置最小的压缩值

gzip_buffers4 16k;             #设置系统的缓存大小

gzip_http_version1.1;           #判断http协议版本,是否支持压缩,否则用户看到乱码。默认即可,大部分都得支持

gzip_comp_level5;                #gzip压缩比,1 压缩比最小处理速度最快,9 压缩比最大但处理最慢

gzip_disable"MSIE [1-6]\.";

gzip_varyon;                       #和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩。

gzip_typestext/plain application/x-javascript text/css application/xml;

upstreambackend{

#ip_hash;           #测试的时候,先注释掉

server 192.168.10.13:80;

server 192.168.10.14:80;

}

server{

listen80;

server_namelocalhost;

location/ {

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;

proxy_pass http://backend;

}

}

}

2.3 Keepalived 安装及配置


2.3.1在192.168.10.11、192.168.10.12 上,分别安装Keepalived。

[root@localhostsrc]#yum install keepalived –y (使用centos自带仓库)

[root@localhostsrc]#chkconfig keepalived on

2.3.2当然你也可以源码进行安装Keepalived

[root@localhost src]# yum install openssl-developenssl

[root@localhost src]# wget http://www.keepalived.org/software/keepalived-1.2.12.tar.gz

[root@localhost src]# tar xf keepalived-1.2.13.tar.gz

[root@localhost src]# cd keepalived-1.2.13

[root@localhost keepalived-1.2.12]# ./configure--prefix=/usr/local/keepalived

[root@localhost keepalived-1.2.12]# make

[root@localhost keepalived-1.2.12]# make install

[root@localhost src]#mkdir /etc/keepalived

[root@localhost src]#cp/usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

做成服务模式,设置开机自启动

[root@localhost src]#cp/usr/local/keepalived/sbin/keepalived /usr/sbin/

[root@localhost src]#cp/usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

[root@localhost src]#cp/usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

[root@localhost src]#chkconfig --add keepalived

[root@localhost src]#chkconfig keepalived on

2.3.3修改192.168.10.11 上的/etc/keepalived/keepalived.conf文件,如下所示:

global_defs{

notification_email{

localhost.com       ##出故障发送邮件给谁

}

notification_email_fromtest@baba.io   ##故障用哪个邮箱发送邮件

smtp_server127.0.0.1                    ##SMTP_Server IP

smtp_connect_timeout30                  ##超时时间

router_idLVS_DEVEL                      ##服务器标识

}

vrrp_instanceVI_1 {

state BACKUP                       ##状态,都为BACKUP,它们会推选Master,如果你写MASTER,它就会是Master,当Master故障时Backup会成Master,当原来的Master恢复后,原来的Master会成为Master

interface eth0                     ##发送VRRP的接口,仔细看你的是不是eth0

virtual_router_id100        ##虚拟路由标识,同一个组应该用一个,即MasterBackup同一个

priority 200                 ##重要的优先级哦

advert_int1                 ##同步间隔时长

nopreempt                    ##不抢占,一个故障时,重启后恢复后不抢占意资源

authentication{

auth_typePASS               ##认证方式

auth_pass123456             ##密钥

}

virtual_ipaddress{

192.168.10.50                ##VIP

}

}

2.3.4修改192.168.10.12 上的/etc/keepalived/keepalived.conf文件,如下所示:

global_defs{

notification_email{

localhost.com

}

notification_email_fromtest@baba.io

smtp_server127.0.0.1

smtp_connect_timeout30

router_idLVS_DEVEL

}

vrrp_script chk_nginx{                        #监控nginx服务进程脚本
   script “
/root/shell/nginx_check.sh”  
   interval 2
   weight 2
}

vrrp_instanceVI_1 {

state BACKUP

interface eth0

virtual_router_id100

priority100

advert_int1

authentication{

auth_typePASS

auth_pass123456

}

virtual_ipaddress{

192.168.10.50

}

}


2.3.5在192.168.10.11、192.168.10.12上,编写SHELL 脚本,监测Nginx 是否正常,如果Nginx挂掉了,则停掉Keepalived

[root@localhost ~]# vim /root/shell/nginx_check.sh

#!/bin/bash

while :

do

nginxcheck=`ps -C nginx --no-header | wc -l`

keepalivedcheck=`ps -C keepalived --no-header | wc -l`

if [ $nginxcheck -eq 0 ];then

if [ $keepalivedcheck -ne 0 ];then

/etc/init.d/keepalived stop

else

echo "keepalived is stoped"

fi

elif [ $keepalivedcheck -eq 0 ];then

/etc/init.d/keepalived start

fi

sleep 5

done


3. Web Server 安装

为了方便演示,Web Server 上只安装Apache(也可以安装Tomcat、Resin 等),来提供Web服务。

3.1在192.168.10.13 上安装Apache,并设置首页内容为自己的IP 地址

[root@localhost ~]# yum install httpd

[root@localhost ~]# echo"<h1>192.168.10.13</h1>" > /var/www/html/index.html

[root@localhost ~]# service httpd start

KEEPALIVED1.2.12+ NGINX1.6.2 在CENTOS6.4实现负载均衡高可用部署手册

3.2在192.168.10.14 上安装Apache,并设置首页内容为自己的IP 地址

[root@localhost ~]# yum install httpd

[root@localhost ~]# echo"<h1>192.168.10.14</h1>" > /var/www/html/index.html

[root@localhost ~]# service httpd start

4. 测试Nginx+Keepalived

完成上面步骤后,集群环境就搭建好了,下面就测试集群环境是否正常。

4.1在192.168.10.11、192.168.10.12 上,分别启动Nginx 并开启监测

[root@localhost ~]# /usr/local/nginx/sbin/nginx

[root@localhost~]# nohup sh /root/shell/nginx_check.sh &

4.2测试方法如下:

1)打开浏览器,输入192.168.10.50 后,是否轮回显示“192.163.10.13”或“192.163.10.14

2)关闭192.168.10.11 上的NginxWeb 服务是否还正常

3)关闭192.168.10.12 上的Nginx,启动192.168.10.11 上的NginxWeb 服务是否还正常

4)关闭192.168.10.13 上的ApahceWeb 服务是否还正常


 

关于全球CTO俱乐部


官网:www.ctoclub.com, 全球最有影响力的高端互联网技术人脉圈子平台,是由全球各个城市地区的技术高管、创业者、投资人、媒体人等组成,定期举办各种活动,俱乐部愿做桥梁纽带,为会员创造一流的商务平台,俱乐部宗旨:跨界、交流、分享、合作 !


PS:人才招聘、外包需求、早期项目都可以发送邮件到xiaoluo@ctoclub.com



以上是关于KEEPALIVED1.2.12+ NGINX1.6.2 在CENTOS6.4实现负载均衡高可用部署手册的主要内容,如果未能解决你的问题,请参考以下文章

亲测完美centos7部署Nginx1.6.3(附一键安装nginx1.13.8脚本)

#yyds干货盘点#Ubuntu 基于Nginx1.8的Golang环境搭建(Ubuntu 20.04 + Nginx1.8 + Golang 1.17 )

Nginx1.10编译安装

nginx1.14.0安装

nginx1.8.0安装

nginx1.8.0安装