Nginx结合keepalived实现前端负载高可用

1、前言:

nginx常常被作为前端负载服务器,当负载过高导致宕机将会导致整个服务不可用,这时候将会给企业带来巨大的损失,高可用由此而生,当一台master宕机后,slave将会在短时间内接替master的工作继续对外提供服务。

本文将介绍nginx结合keepalived实现前端高可用。

2、安装说明:

系统环境:centos 6.6
软件包:nginx 1.13.1 keepalived 1.2.13

3、安装nginx

创建nginx安装目录:
mkdir /nginx

安装nginx依赖关系:
yum -y install pcre-devel pcer openssl-devel openssl gcc g++

创建nginx用户和组:
groupadd nginx
useradd -g nginx -s /bin/nologin -M nginx

进入软件包目录
cd /home/macro/tools/

解压并安装nginx:
tar -zvf nginx-1.13.1.tar.gz
cd nginx-1.13.1
./configure –user=nginx –group=nginx –prefix=/nginx –with-http_stub_status_module –with-http_ssl_module
make && make install

启动nginx:
/nginx/sbin/nginx
lsof -i :80 \返回以下即为正确
"1.png"
curl 192.168.1.104 \返回以下即为正确
"2.png"
在浏览器输入http://192.168.1.104
"3.png"

修改nginx配置文件:
vim /nginx/conf/nginx.conf
以下是修改后的配置文件:
[root@nginx-lb1 ~]# cat /nginx/conf/nginx.conf|grep -v ‘#’
worker_processes 1;

events {
worker_connections 10240;
}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

upstream macro.com{
server 192.168.137.11:8080;
server 192.168.137.12:8080;
}
server {
listen 80;
server_name location;
location / {
proxy_pass http://macro.com;
proxy_redirect default;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

重启nginx服务使配置生效:
/nginx/sbin/nginx -t \测试配置文件是否存在错误
/nginx/sbin/nginx -s reload
"4.png"

编写nginx日志切割脚本:
vi /cut_nginx_log.sh
将以下内容输入后保存并退出

#!/bin/sh
dateformat=’data +%y%m%d’
basedir=”/nginx”
nginxlogdir=”$basedir/logs”
logname=”accesswww”
[ -d $nginxlogdir ] && cd $nginxlogdir ||exie 1
[ -f ${logname}.log ]|| exit 1
/bin/mv ${logname}.log ${dateformat}
${logname}.log
$nginxlogdir/sbin/nginx -s reload

#通过定时任务定时每天00点整执行/cut_nginx_log.sh切割日志:
cat >>/var/spool/cron/root </dev/null 2>&1
EOF
[root@nginx-lb1 ~]# crontab -l
00 00 * /bin/sh /cut_nginx_log.sh >/dev/null 2>&1

4、安装keepalived

yum -y install keepalived
rpm -qa keepalived
"5.png"

启动keepalived并检查服务:
server keepalived start
"6.png"

配置高可用服务:
vi /etc/keepalived/keepalived.conf

下图为masert与backup配置文件对比:
"7.png"

测试当master宕机够backup是否会接替其工作:
[root@nginx-lb1 ~]# ip addr|grep 192.168.1.200
inet 192.168.1.200/24 scope global secondary eth0:1
[root@nginx-lb2 ~]# ip addr|grep 192.168.1.200
[root@nginx-lb2 ~]#
[root@nginx-lb1 ~]# service keepalived stop
停止 keepalived:[确定]
[root@nginx-lb1 ~]# ip addr|grep 192.168.1.200
[root@nginx-lb1 ~]#
[root@nginx-lb2 ~]# ip addr|grep 192.168.1.200
inet 192.168.1.200/24 scope global secondary eth2:1
[root@nginx-lb2 ~]#

到此keepalived高可用+nginx负载均衡就配置完成了。