Centos6下nginx+keepalived构建高可用web集群

1)拓扑描述:

2) nginx的安装准备

pcre:兼容的正则表达式,nginx也要支持伪静态

# yum -y install pcre pcre-devel
# yum -y install openssl*
# mkdir -p /application/nginx1.6.2
# ln -s /application/nginx1.6.2 /application/nginx

3) 安装nginx

# cd /usr/local/src
# tar xf nginx-1.6.2.tar.gz
# cd nginx-1.6.2
# useradd nginx -s /sbin/nologin -M
# ./configure --user=nginx --group=nginx --prefix=/application/nginx1.6.2 --with-http_stub_status_module --with-http_ssl_module
# echo $?
0
# make && make install

4) 启动nginx

检查语法:
# /application/nginx1.6.2/sbin/nginx -t
nginx: the configuration file /application/nginx1.6.2/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx1.6.2/conf/nginx.conf test is successful
启动nginx:
# /application/nginx/sbin/nginx 
查看端口号:
# lsof -i :80
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   14603  root    6u  IPv4  29397      0t0  TCP *:http (LISTEN)
nginx   14604 nginx    6u  IPv4  29397      0t0  TCP *:http (LISTEN)
# netstat -tunlp | grep nginx
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      14603/nginx 
测试网页页面:
# curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.6.2
Date: Tue, 20 Sep 2016 02:17:20 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 20 Sep 2016 02:11:05 GMT
Connection: keep-alive
ETag: "57e09ab9-264"
Accept-Ranges: bytes

5)配置nginx启动脚本

# vim /etc/init.d/nginx
#!/bin/sh  
# chkconfig: 2345 85 15  
# description:Nginx Server  
# nginx的安装目录
NGINX_HOME=/application/nginx  
# nginx的命令
NGINX_SBIN=$NGINX_HOME/sbin/nginx  
# nginx的配置文件
NGINX_CONF=$NGINX_HOME/conf/nginx.conf  
# nginx的pid
NGINX_PID=$NGINX_HOME/logs/nginx.pid  
  
NGINX_NAME="Nginx"  
  
. /etc/rc.d/init.d/functions  
  
if [ ! -f $NGINX_SBIN ]  
then  
    echo "$NGINX_NAME startup: $NGINX_SBIN not exists! "  
    exit  
fi  
  
start() {  
    $NGINX_SBIN -c $NGINX_CONF  
    ret=$?  
    if [ $ret -eq 0 ]; then  
        action $"Starting $NGINX_NAME: " /bin/true  
    else  
        action $"Starting $NGINX_NAME: " /bin/false  
    fi  
}  
  
stop() {  
    kill `cat $NGINX_PID`  
    ret=$?  
    if [ $ret -eq 0 ]; then  
        action $"Stopping $NGINX_NAME: " /bin/true  
    else  
        action $"Stopping $NGINX_NAME: " /bin/false  
    fi  
}  
  
restart() {  
    stop  
    start  
}  
  
check() {  
    $NGINX_SBIN -c $NGINX_CONF -t  
}  
  
  
reload() {  
    kill -HUP `cat $NGINX_PID` && echo "reload success!"  
}  
  
relog() {  
    kill -USR1 `cat $NGINX_PID` && echo "relog success!"  
}  
  
case "$1" in  
    start)  
        start  
        ;;  
    stop)  
        stop  
        ;;  
    restart)  
        restart  
        ;;  
    check|chk)  
        check  
        ;;  
    status)  
        status -p $NGINX_PID  
        ;;  
    reload)  
        reload  
        ;;  
    relog)  
        relog  
        ;;  
    *)  
        echo $"Usage: $0 {start|stop|restart|reload|status|check|relog}"  
        exit 1  
esac
# chmod +x /etc/init.d/nginx
# /etc/init.d/nginx start
# chkconfig --add nginx
# chkconfig nginx on

6) 配置nginx的upstream功能(两台负载均衡器上做相同的配置)

# egrep -v ‘#‘ /application/nginx/conf/nginx.conf|grep -v ‘^$‘
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    include extra/upstream01.conf;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
说明:注意include extra/upstream01.conf这个文件,是引用此文件(两台负载均衡器上做系统的nginx配置)
# mkdir -p /application/nginx/conf/extra/
# vim /application/nginx/conf/extra/upstream01.conf 
upstream nginx.wanwan.com {
server 10.10.10.128:80 weight=5;
server 10.10.10.132:80 weight=5;
    }
server {
listen80;
server_namenginx.wanwan.com;
location / {
proxy_pass http://nginx.wanwan.com;
}
}
# /etc/init.d/nginx restart
Stopping Nginx:                                            [确定]
Starting Nginx:                                            [确定]

7)keepalived的安装

# cd /usr/local/src
# wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz
# ln -s /usr/src/kernels/2.6.32-573.el6.x86_64/ /usr/src/linux
# ls -l /usr/src
总用量 244
drwxr-xr-x. 2 root root   4096 9月  23 2011 debug
-rw-r--r--  1 root root 241437 1月  28 2014 keepalived-1.1.19.tar.gz
drwxr-xr-x. 3 root root   4096 7月   5 23:49 kernels
lrwxrwxrwx  1 root root     39 8月  31 08:49 linux -> /usr/src/kernels/2.6.32-573.el6.x86_64/
# tar xf keepalived-1.1.19.tar.gz 
# cd keepalived-1.1.19
# ./configure 
# make && make install
# cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
# mkdir -p /etc/keepalived
# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
# cp /usr/local/sbin/keepalived /usr/sbin/
# /etc/init.d/keepalived start
正在启动 keepalived:                                      [确定]
# ps -ef | grep keepalived
root      18750      1  0 22:55 ?        00:00:00 keepalived -D
root      18752  18750  0 22:55 ?        00:00:00 keepalived -D
root      18753  18750  0 22:55 ?        00:00:00 keepalived -D
root      18755  18664  0 22:55 pts/0    00:00:00 grep keepalived
keepalived-master的配置文件/etc/keepalived/keepalived.conf
[[email protected] extra]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
   [email protected]
   }
   notification_email_from [email protected]
   smtp_server smtp.qq.com
   smtp_connect_timeout 30
   router_id nginx_7
}
vrrp_instance VI_231 {
    state MASTER
    interface eth0
    virtual_router_id 231
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.10.231/24
    }
}
}
keepalived-slave的配置文件/etc/keepalived/keepalived.conf
[[email protected] ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
   [email protected]
   }
   notification_email_from [email protected]
   smtp_server smtp.qq.com
   smtp_connect_timeout 30
   router_id nginx_7
}
vrrp_instance VI_231 {
    state BACKUP
    interface eth0
    virtual_router_id 231
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.10.231/24
    }
}
}

8) 测试keepalived的功能(VIP为10.10.10.231)

[[email protected] extra]# ip add list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d7:3e:f8 brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.131/24 brd 10.10.10.255 scope global eth0
    inet 10.10.10.231/24 scope global secondary eth0
    inet6 fe80::20c:29ff:fed7:3ef8/64 scope link 
       valid_lft forever preferred_lft forever
[[email protected] ~]# ip add list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:71:33:eb brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.135/24 brd 10.10.10.255 scope global eth0
    inet6 fe80::20c:29ff:fe71:33eb/64 scope link 
       valid_lft forever preferred_lft forever
   
关闭主负载均衡上的keepalived功能
[[email protected] extra]# /etc/init.d/keepalived stop
停止 keepalived:                                          [确定]
[[email protected] extra]# ip add list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d7:3e:f8 brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.131/24 brd 10.10.10.255 scope global eth0
    inet6 fe80::20c:29ff:fed7:3ef8/64 scope link 
       valid_lft forever preferred_lft forever
   
[[email protected] ~]# ip add list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:71:33:eb brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.135/24 brd 10.10.10.255 scope global eth0
    inet 10.10.10.231/24 scope global secondary eth0
    inet6 fe80::20c:29ff:fe71:33eb/64 scope link 
       valid_lft forever preferred_lft forever
由上,我们可以知道vip很快就进行了切换,那么我们恢复主负载均衡器上的keepalived功能:
[[email protected] extra]# /etc/init.d/keepalived start
正在启动 keepalived:                                      [确定]
[[email protected] extra]# ip add list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d7:3e:f8 brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.131/24 brd 10.10.10.255 scope global eth0
    inet 10.10.10.231/24 scope global secondary eth0
    inet6 fe80::20c:29ff:fed7:3ef8/64 scope link 
       valid_lft forever preferred_lft forever
[[email protected] ~]# ip add list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:71:33:eb brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.135/24 brd 10.10.10.255 scope global eth0
    inet6 fe80::20c:29ff:fe71:33eb/64 scope link 
       valid_lft forever preferred_lft forever
由上,我们发现当主负载均衡器恢复后,vip很快就切换过来了(因为主负载均衡器上的优先级更高)

9)测试nginx的反向代理功能

[[email protected] ~]# curl 10.10.10.128
mysql successful by oldboy !
[[email protected] ~]# curl 10.10.10.132
this is web02‘s website

然后我们在客户端打开nginx.wanwan.com

按F5刷新:

[[email protected] extra]# /etc/init.d/nginx stop
Stopping Nginx:                                            [确定]
[[email protected] extra]# ip add list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d7:3e:f8 brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.131/24 brd 10.10.10.255 scope global eth0
    inet 10.10.10.231/24 scope global secondary eth0
    inet6 fe80::20c:29ff:fed7:3ef8/64 scope link 
       valid_lft forever preferred_lft forever
[[email protected] extra]# /etc/init.d/keepalived stop
停止 keepalived:

由上可知,后端网页仍旧正常。

10)注意事项

a、注意关闭负载均衡器以及web后端服务器的iptables以及selinux功能

b、两台负载均衡器上关于nginx配置是一致的,keepalived有不同的优先级

时间: 2024-08-02 11:01:55

Centos6下nginx+keepalived构建高可用web集群的相关文章

Centos 7部署docker+nginx+keepalived实现高可用web集群

一.体系架构 在Keepalived + Nginx高可用负载均衡架构中,keepalived负责实现High-availability (HA) 功能控制前端机VIP(虚拟网络地址),当有设备发生故障时,热备服务器可以瞬间将VIP自动切换过来,实际运行中体验只有2秒钟切换时间,DNS服务可以负责前端VIP的负载均衡.nginx负责控制后端web服务器的负载均衡,将客户端的请求按照一定的算法转发给后端Real Server处理,而Real Server将响应直接返回给客户端. 二.简单原理 NG

Keepalived+Nginx+Tomcat 实现高可用Web集群(转)

Keepalived+Nginx+Tomcat 实现高可用Web集群 溯水心生 关注 2018.01.08 20:28* 字数 1382 阅读 965评论 1喜欢 9 集群规划图片 一.Nginx的安装过程 1.下载Nginx安装包,安装依赖环境包 (1)安装 C++编译环境 yum -y install gcc #C++ (2)安装pcre yum -y install pcre-devel (3)安装zlib yum -y install zlib-devel (4)安装Nginx 定位到n

Nginx+Tomcat+Keepalived实现高可用web集群

Nginx+Tomcat+Keepalived实现高可用web集群: 环境:CenOS 6.5Nginx-Master:10.10.10.128Nginx-Backup:10.10.10.129Tomcat1:10.10.10.130Tomcat2:10.10.10.131VIP:10.10.10.100 一.环境基础配置1.更换国内yum源2.关闭防火墙.SELinux3.时间同步 二.Web端安装Web服务 1.查看是否安装JDK [[email protected] ~]# java -v

CentOS7+MySQL/MariaDB+Galera+HAProxy+Keepalived构建高可用数据库集群

方案优势: Galera能够实现MySQL/MariaDB数据库的主主复制和多主复制等模式,这些复制模式都是同步进行的,同步时间非常短 每一个节点都可以同时写入和读取,当某一节点发生故障时,可自动从集群中自动剔除 HAProxy能提供负载均衡和故障判断等功能解决服务器系统存在的单点故障 Keepalived能提供客户端连接数据库时使用的虚拟IP地址(VIP) 关于HAProxy的负载均衡算法 轮询方式(roundrobin):不适合用于backend为web服务器的情况,因为session.co

nginx结合keepalived做高可用负载集群服务

一.概述 前面几篇介绍了nginx做web网站以及https网站,反向代理,LVS的NAT与DR调度负载,但由于nginx本身负载是七层,需要套接字,即使基于upstream模块模拟成四层代理也是瓶颈,因此本文介绍nginx基于keepalived做高可用负载均衡集群服务,目标就是两台keepalived对nginx反向代理负载服务做检查与调度,做成双主模式,nginx负载调度后端的httpd网站,任何一台调度器(nginx或keepalived服务)故障,不影响业务;后端任何一台web故障也不

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置 LB集群是locd balance集群的简称.翻译成中文是:负载均衡集群的意思:集群是一组相互独立的.通过高速网络互联的计算机相互之间构成一个组合,并以单一的系统的模式加以管理.LVS是Linux Virtual Server的简写,翻译中文是Linux虚拟服务器,是一个虚拟的服务器集群系统. 负载均衡集群:是为了企业提供更为实用,性价比更高的系统机构解决方案.负载均衡集群把用户的请求尽可能的平均分发到集群的各

.net core下简单构建高可用服务集群

原文:.net core下简单构建高可用服务集群 一说到集群服务相信对普通开发者来说肯定想到很复杂的事情,如zeekeeper ,反向代理服务网关等一系列的搭建和配置等等:总得来说需要有一定经验和规划的团队才能应用起来.在这文章里你能看到在.net core下的另一种集群构建方案,通过Beetlex即可非常便捷地构建高可用的集群服务. 简述 Beetlex的Webapi集群应用并没有依赖于第三方服务,而是由Beetlex自身完成:它主要是通过Client和策略监控服务相结合的方式来实现集群化的服

corosycn&pacemaker的高可用web集群

基本拓扑: 两台高可用节点: node1:192.168.191.112 node2:192.168.191.113 NFS服务器:192.168.191.111 web服务的流动IP:192.168.191.199 一.准备工作: 1).node1---node2 基于主机名通信 1.编辑/etc/hosts文件添加如下内容 192.168.191.112 node1.liaobin.com node1 192.168.191.113 node2.liaobin.com node2 2.编辑/

heartbeat httpd nfs 实现高可用web集群

一 环境准备 二 拓扑结构 三 前提条件 四 安装相关软件 五 配置heartbeat 六 测试web集群 七 问题汇总 八 共享存储 一 环境准备 操作系统 centos 6.4 x86_64 最小化安装 如使用yum 安装的方式 centos5.5 安装的是V2.X ,centos 6.4 安装的是V3.X YUM 安装 Vim man ntp "development tools" "server platform development" "des