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 ##虚拟路由标识,同一个组应该用一个,即Master与Backup同一个
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
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 上的Nginx,Web 服务是否还正常
3)关闭192.168.10.12 上的Nginx,启动192.168.10.11 上的Nginx,Web 服务是否还正常
4)关闭192.168.10.13 上的Apahce,Web 服务是否还正常
关于全球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 )