Nginx+Keepalived高可用负载均衡服务器搭建
来源:互联网 发布:excel调查问卷数据录入 编辑:程序博客网 时间:2024/06/07 16:07
一、服务器规划
两台服务器一个主机一个备机。
主机ip:192.168.40.130
备机ip:192.168.40.131
虚拟ip:192.168.40.200
二、安装
两台接入服务器分别安装Nginx和keepalived
1、安装依赖包
yum -y install gcc pcre-devel zlib-devel openssl-devel
2、从Nginx官网(http://nginx.org/)下载最新稳定版本nginx-1.10.2.tar.gz
从Keepalived官网(http://www.keepalived.org)下载版本keepalived-1.2.23.tar.gz
CenOS 6.4以下要下载1.2.23及以下版本,不然会编译不通过,切记。CenOS7可以下载任意高版本
3、安装Nginx
将上述文件上传至/home目录下
tar -zxvf nginx-1.10.2.tar.gzcd nginx-1.10.2./configure --with-http_stub_status_modulemake make install
出现下图表示安装成功!
检查Nginx安装在哪:
whereis nginx
发现Nginx会安装在/usr/local/nginx 下面。
启动Nginx:/usr/local/nginx/sbin/nginx
检查是否有Nginx进程:ps -ef | grep nginx
如图
有Nginx进程,输入网址测试:http://192.168.40.132/
4、Nginx命令
启动:/usr/local/nginx/sbin/nginx
停止/重新加载:/usr/local/nginx/sbin/nginx -s stop(quit、reload)
验证配置文件是否合法:/usr/local/nginx/sbin/nginx -t
命令帮助:/usr/local/nginx/sbin/nginx -h
文档最后又Nginx配置,可以等Keepalived安装完成之后再配置。
5、安装keepalived-1.2.23(注意在CentOS6.4上安装高于此版本会有问题)
把 keepalived-1.2.23.tar.gz拷贝到 /usr/local/src目录下
cd /usr/local/srctar -zxvf keepalived-1.2.23.tar.gzcd keepalived-1.2.23 ./configure --prefix /usr/local/keepalived
出现下图则configure成功。
make make install
如果没有出现[ERR],则表示安装成功,成功会出现下图
安装成功后可以查看安装在哪
whereis keepalived
做成服务模式,方便启动和关闭。
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
修改/usr/local/keepalived/etc/keepalived/keepalived.conf
cd /usr/local/keepalived/etc/keepalivedvim keepalived.conf
keepalived.conf配置如下,主机和备机稍有不同。
! Configuration File for keepalivedglobal_defs { notification_email { 630319550@qq.com } notification_email_from 630319550@qq.com smtp_server smtp.qq.com smtp_connect_timeout 30 router_id keepalived_master #主备机标识,备机为keepalived_backup vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0}vrrp_instance VI_1 { state MASTER #备机为 BACKUP interface eth1 #网卡名称,有的是eth0 virtual_router_id 51 #主备机必须一致 priority 101 #备机要比主机数值低,此处备机为99 advert_int 1 authentication { auth_type PASS #主备机必须一致 auth_pass 1111 #主备机必须一致 } virtual_ipaddress { 192.168.40.200 #虚拟ip地址,主备机一致 }}
修改完成之后复制到etc
cp -r /usr/local/keepalived/etc/keepalived /etc
先在主机启动Keepalived
service keepalived start
查看启动日志
tail /var/log/messages
说明虚拟ip已经切换到192.168.40.200
查看ip配置
ip addr
在备机上启动Keepalived,并关掉主机Keepalived,查看备机是否接管虚拟ip,如果成功接管则代表安装成功。
我们需要的是当NginX停止服务的时候能够自动切换。
keepalived支持配置监控脚本,我们可以通过脚本监控NginX的状态,如果状态不正常则进行一系列的操作,最终仍不能恢复NginX则杀掉keepalived,使得从服务器能够接管服务。
在/usr/local/keepalived 文件夹下编写脚本。
cd /usr/local/keepalivedvim check_nginx_pid.sh
脚本如下:
#!/bin/bashA=`ps -C nginx --no-header |wc -l`if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall keepalived fifi
把如上脚本拷贝到备机
scp check_nginx_pid.sh root@192.168.40.131:/usr/local/keepalived
设置脚本执行权限
chmod 777 check_nginx_pid.sh
在keepalived.conf中添加如下配置
vrrp_script chk_http_port { script "/usr/local/keepalived/check_nginx_pid.sh" #脚本interval 2 #执行脚本时间间隔 weight 2 # 权重}track_script { chk_http_port}
到此已经全部配置完成!
测试:
分别启动nginx
./usr/local/nginx/sbin/nginx
在浏览器分别输入主备机真实网址查看
先启动主机Keepalived,再启动备机Keepalived
service keepalived start
在浏览器输入http://192.168.40.200/ 上面配置的虚拟ip成功进入nginx界面则说明Keepalived已经接管虚拟ip并能访问nginx。
在主机停掉nginx服务
killall nginx
基于刚才的脚本nginx会自动重启,为了测试可以先把主机nginx卸载掉,此时刚才的脚本检测到nginx已经没有进程且重启不了,则会把Keepalived杀死,此时备机会接管虚拟ip,此时访问http://192.168.40.200/照样能访问到nginx。
这样就实现了nginx的高可用,这样做虽然能实现nginx高可用但是nginx备机长期处于备份状态所以我们想将二台Nginx负载均衡器都处于工作状态,在keepalived的配置文件添加另一个VIP实例就可以,这样就能实现两个nginx互为主备!
附Nginx配置:
此配置已通过复合项目简单测试
vim nginx.conf
配置如下:
#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; upstream pizirui { server localhost:8081 weight=10; server localhost:8082 weight=10; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://pizirui; proxy_connect_timeout 1; proxy_read_timeout 1; proxy_send_timeout 1; } }}
- Nginx+Keepalived高可用负载均衡服务器搭建
- keepalived+nginx搭建高可用and负载均衡集群
- Nginx+Keepalived搭建高可用负载均衡集群
- nginx+keepalived搭建高可用负载均衡(主备模式)
- nginx+keepalived搭建高可用负载均衡(双主模式)
- 搭建 Keepalived + Nginx + Tomcat 的高可用负载均衡架构
- 配置Nginx+keepalived高可用负载均衡服务器
- nginx+keepalived 高可用负载均衡
- nginx+keepalived实现高可用负载均衡
- nginx+keepalived 高可用负载均衡
- Keepalived+Nginx实现负载均衡高可用
- Nginx-keepalived高可用负载均衡
- nginx+keepalived负载均衡之高可用
- Keepalived+Nginx实现负载均衡高可用
- Keepalived+Nginx实现负载均衡高可用
- Keepalived + nginx实现高可用负载均衡
- Nginx+keepalived 实现负载均衡,高可用
- keepalived搭建高可用负载均衡服务
- 不错的可视化算法示例
- CSS hack写法 收集版
- Caffe入门1
- squid的代理服务软件
- 数据字典
- Nginx+Keepalived高可用负载均衡服务器搭建
- android中xml tools属性详解
- ZOJ3329 One Person Game 概率dp
- extjs使用工具Sencha Architect
- 透彻理解IoC(控制反转)
- C# 在窗体中绘制字体
- 在虚拟机中安装CentOS7
- iOS开发中ViewController使用详解
- c# linq的高级用法:分页查询和导出Excel共用一个方法