Keepalived+nginx实现高可用负载均衡
图1基本逻辑图
图2 为IP地址分配。
主要用途 |
IP |
Haproxy+ningx_master |
192.168.236.143 |
Haproxy+nginx_backup |
192.168.236.192 |
Webser1 |
192.168.236.150 |
Webser2 |
192.168.236.151 |
一、配置Nginx
一、安装如下环境
yum -y install make gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel libpng10 libpng10-devel gd gd-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel gettext gettext-devel ncurses-devel gmp-devel pspell-devel unzip libcap lsof
编译pcre的包
tar zxf pcre-8.31.tar.gz cd pcre-8.31 ./configure make && make install useradd -s /sbin/nologno -g nginx -M nginx tar zxf nginx-1.10.2.tar.gz cd nginx-1.10.2 ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/bin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre make make install /usr/local/nginx/bin/nginx –t ./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory 解决prce的问题 #find / -name libpcre.so* /usr/local/lib/libpcre.so.1.0.1 /usr/local/lib/libpcre.so /usr/local/lib/libpcre.so.1 /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.0 出现了这么多结果。我们安装的PCRE库的位置在/usr/local/pcre中,我们就用这个位置vim /etc/ld.so.conf 在尾行加入/usr/local/bin root@mail2 bin]# ldconfig #/usr/local/nginx/bin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
这就正常了
启动nginx
/usr/local/nginx/bin/nginx vim /usr/local/nginx/conf/nginx.conf
在最后面的大括号前面添加一行
include /usr/local/nginx/conf.d/*.conf;
建立这个目录
mkdir /usr/local/nginx/conf.d
vim /usr/local/nginx/conf.d/lkq.conf
upstream backend
{server 192.168.236.150:80 weight=1;server 192.168.236.151:80 weight=2;#ip_hash;
}
server
{listen 80;server_name www.lkq.com;location ~ ^/*{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_buffering off;proxy_pass http://backend;}
}
客户端测试一下
记得在客户端添加本地hosts
二、配置keepalived
一:安装过程,在两台HA机器上分别keepalived:
#ln -s /usr/src/kernels/2.6.18-128.el5-i686/ /usr/src/linux http://www.keepalived.org/software/ keepalived 的下载地址。版本的话自己可以选择一下版本。楼主选择的版本是1.2.23的版本 [root@mail2 keepalived-1.2.23]# ./configure –sysconf=/etc [root@mail2 keepalived-1.2.23]# make && make install [root@mail2 keepalived-1.2.23]# ln –s /usr/local/sbin/keepalived /sbin [root@mail2keepalived-1.2.23]#cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak [root@mail4keepalived-1.2.23]# ln -s /etc/init.d/keepalived /etc/rc.d/rc3.d/S99keepalived [root@mail4keepalived-1.2.23]# ln -s /etc/init.d/keepalived /etc/rc.d/rc5.d/S99keepalived
二、修改配置文件
[root@Lserver-1 keepalived]# cat keepalived.conf Master : global_defs {notification_email {zhouxiao@example.comitsection@example.com}notification_email_from itsection@example.comsmtp_server mail.example.comsmtp_connect_timeout 30router_id LVS_DEVEL } vrrp_script chk_nginx { # script "killall -0 nginx"script "/etc/keepalived/check_nginx.sh" interval 2 weight -5 fall 3 rise 2 } global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_nginx } virtual_ipaddress { 192.168.236.230 } } }
Backup
global_defs {notification_email {zhouxiao@example.comitsection@example.com}notification_email_from itsection@example.comsmtp_server mail.example.comsmtp_connect_timeout 30router_id LVS_DEVEL }vrrp_script chk_nginx { # script "killall -0 nginx"script "/etc/keepalived/check_nginx.sh" interval 2 weight -5 fall 3 rise 2 }global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 120 advert_int 1 authentication { auth_type PASS auth_pass 1111 }track_script { chk_nginx }virtual_ipaddress { 192.168.236.230 } } }
2.2 nginx监控脚本
该脚本检测ngnix的运行状态,并在nginx进程不存在时尝试重新启动ngnix,如果启动失败则停止keepalived,准备让其它机器接管。 /etc/keepalived/check_nginx.sh : #!/bin/bash counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then/usr/local/nginx/bin/nginxsleep 2counter=$(ps -C nginx --no-heading|wc -l)if [ "${counter}" = "0" ]; then/etc/init.d/keepalived stopfi fi
你也可以根据自己的业务需求,总结出在什么情形下关闭keepalived,如 curl 主页连续2个5s没有响应则切换:
#!/bin/bash # curl -IL http://localhost/member/login.htm # curl --data "memberName=fengkan&password=22" http://localhost/member/login.htm count = 0 for (( k=0; k<2; k++ )) do check_code=$( curl --connect-timeout 3 -sL -w "%{http_code}\\n" http://localhost/login.html -o /dev/null )if [ "$check_code" != "200" ]; thencount = count +1continueelsecount = 0breakfi done if [ "$count" != "0" ]; then # /etc/init.d/keepalived stopexit 1 elseexit 0 fi
启动keepalived
[root@Rserver-1 keepalived]# /etc/init.d/keepalived start Starting keepalived: [ OK ] [root@Rserver-1 keepalived]# ip addr list|grep eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000inet 192.168.236.143/24 brd 192.168.236.255 scope global eth0inet 192.168.236.230/32 scope global eth0 [root@Rserver-1 keepalived]#
后面测试一下关闭主上面的keepalived 查看一下备节点的IP
[root@Lserver-1 keepalived]# ip addr list|grep eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000inet 192.168.236.192/24 brd 192.168.236.255 scope global eth0 inet 192.168.236.230/32 scope global eth0 [root@Lserver-1 keepalived]# ps -ef |grep nginx root 19499 1 0 23:00 ? 00:00:00 nginx: master process /usr/local/nginx/bin/nginx nginx 19501 19499 0 23:00 ? 00:00:00 nginx: worker process root 21102 3820 0 23:12 pts/0 00:00:00 grep nginx [root@Rserver-1 keepalived]#
已经成功了。
EOF
转载于:https://www.cnblogs.com/liang2580/articles/7789157.html
Keepalived+nginx实现高可用负载均衡相关推荐
- Keepalived+Nginx实现高可用负载均衡集群
转载自 https://www.cnblogs.com/mrlapulga/p/6857294.html 一 环境介绍 1.操作系统 CentOS Linux release 7.2.1511 (Co ...
- 用 Keepalived+HAProxy 实现高可用负载均衡的配置方法
1. 概述 软件负载均衡技术是指可以为多个后端服务器节点提供前端IP流量分发调度服务的软件技术.Keepalived和HAProxy是众多软负载技术中的两种,其中Keepalived既可以实现负载均衡 ...
- 转载--CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
源地址:http://www.cnblogs.com/mchina/archive/2012/08/27/2644391.html 一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台: ...
- 利用LVS+Keepalived 实现高性能高可用负载均衡服务器
作者:NetSeek [url]http://www.linuxtone.org[/url](IT运维专家网|集群架构|性能调优) 欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 ...
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...
- LVS_DR实现(负载均衡)及LVS_DR+keepalived实现(高可用+负载均衡)
client->VS->RS->client(VS只做调度,RS为虚拟服务器) LVS_DR原理图解: 优点:负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用 ...
- consul-template + nginx部署高可用负载均衡
一.目标 1.Nginx实现负载均衡 2.consul-template动态维护Nginx里面的server 3.consul-template监控Consul集群 4.每个服务配置Consul做服务 ...
- RHCS套件+Nginx实现高可用负载均衡
红帽集群套件(RedHat Cluter Suite, RHCS)是一套综合的软件组件,可以通过在部署时采用不同的配置,以满足你对高可用性,负载均衡,可扩展性,文件共享和节约成本的需要. 它提供有如下 ...
- DNS部署(四)之lvs+keepalived+bind架构高可用负载均衡DNS系统
1.网络拓扑 2.环境描述 系统描述 IP地址 作用 LB-master 192.168.1.105 主备负载均衡器(同时做web和DNS调度) LB-backup 192.168.1.106 DNS ...
最新文章
- oracle 的 import,ORACLE import工具参数
- 未来2年,程序员如何吊打高学历工程师?服气!
- C#编程利器系列文章
- 海洋分享皮肤_最稀有的军需皮肤,外号第一代身法套,如今都进了素材包
- 自定义线程池-参数设计分析
- React开发(139):ant design学习指南之下载文件
- 深入浅出TCPIP之实战篇—用c++开发一个http服务器(二十一)
- AD维护管理工具详解(一)dcdiag
- sql server根据年查询日期_SQL根据日期条件使用between查询数据集应注意事项
- T - SQL(常用语句)
- PDF、图片、合并、转化工具
- 基于Verilog的简易计算器
- Git版本控制基本使用知识整理
- 你不知道的二手车分期购车背后的套路
- 高等数学——驻点,拐点,极值点
- stm32定时器4重映射
- 安装程序无法继续因为计算机上安,Windows安装无法继续怎么办?Windows安装无法继续的解决方法...
- 小米游戏本退出安全模式/win10安全模式密码
- 破解微信数据库 并查询数据上传服务器
- 固生堂通过港交所聆讯:上半年营收约6亿元,已实现连续盈利
热门文章
- ERP和C4C中的function location
- android分层测试,Android视图层次和性能的检测(官方)
- workman php教程_workerman搭建websocket入门教程,简单实用
- VMware 创建开启虚拟机时候报错的解决方式
- linux svn权限如何打开文件,如何让 SVN 或者 GIT 保留 Linux 文件权限
- linux执行class文件_深入理解linux内核——可执行文件执行过程(2)
- 取消对 null 指针“l”的引用。_C语言编程笔记丨C 语言指针 5 分钟教程
- lamp php5.5,CentOS 5.5快速搭建Apache+PHP5+MySQL完美Web服务器(LAMP)
- java 加密服务器_Javascript端加密java服务端解密
- 在国外当程序员是什么体验?