keepalived+nginx实现高可用负载均衡部署
来源:互联网 发布:sql连表update 编辑:程序博客网 时间:2024/06/16 00:16
最近有个项目用到高可用,软件负载部署,此文描述如何用keepalived+nginx实现高可用负载均衡。
keepalived是很好用的双机热备(HA)软件,nginx用做负载均衡,网上案例也很多,这里就不介绍了。
运行原理
keepalived通过选举(看服务器设置的权重)挑选出一台热备服务器做MASTER机器,MASTER机器会被分配到一个指定的虚拟ip,外部程序可通过该ip访问这台服务器,如果这台服务器出现故障(断网,重启,或者本机器上的keepalived crash等),keepalived会从其他的备份机器上重选(还是看服务器设置的权重)一台机器做MASTER并分配同样的虚拟IP,充当前一台MASTER的角色。
服务器清单
主服务器 95 上部署Nginx +keepalived
备服务器89上部署Nginx +keepalived
在95 94服务器上新建不同端口的tocmat
部署结构图
一.配置nginx
安装nginx后,进入conf。找到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;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#正式上线的负载均衡配置
upstream product {
#默认是轮询
#least_conn;#最少连接
#ip_hash;#按ip分配
server xx.xx.190.94:8081 weight=2;#按权重
server xx.xx.190.94:7081 weight=2;
server xx.xx.190.95:8081 weight=2;
server xx.xx.190.95:7081 weight=2;
}
#写入接口的测试
upstream www.star.com {
#默认是轮询
#least_conn;#最少连接
#ip_hash;#按ip分配
server xx.xx.190.94:8081 weight=2;#按权重
server xx.xx.190.94:7081 weight=2;
server xx.xx.190.95:8059 weight=2;
server xx.xx.190.95:7081 weight=2;
}
server {
listen 8086;
server_name www.star.com;
#charset koi8-r;
#access_log logs/host.access.log main;
#location / {
# root html;
# index index.html index.htm;
#}
location / {
proxy_pass http://www.star.com;
proxy_redirect default;
}
}
配置web服务器, upstream 可以配置多个,server_name填写upstream名,哪个就会被调用。
配置端口号,nginx端口不等于tomcat的端口,是一个没有被占用的端口,
二.配置keepalived
安装keepalived后,进入95主服务器,cd /etc/keepalived/ ,vim keepalived.conf,配置如下
state 设置为MASTER
interface 设置为bond0,因为我服务器网卡是bond0,有些服务器网卡是eth。各位根据自己情况填写
priority 101 数值越大,优先级越高。数值一定要大于备机的配置,
配置监控脚本。
如果nignx没有查询到,表明nginx挂掉,直接杀掉keepalived进程
track_script {
Monitor_Nginx #(调用nginx进程检测脚本)
}
脚本内容如下
#!/bin/bash
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
then
killall keepalived
Fi
接下来是配置虚拟IP地址,ip地址是本服务器同网段的未被暂用的IP地址。
virtual_ipaddress {
xx.xx.190.105 #(VRRP HA虚拟地址)
}
这样我们就是配置完成了,备机配置和主机一样,除了优先级和状态,配置如下
到这里我们就配置完成。
三.启动服务,测试
进入nginx安装目录bin,执行
启动
./nginx
重启
./nginx -s reload
快速停止
./nginx -s stop
可以用ps -ef|grep nginx 查看是否启动成功,或者进入logs下,查看日志
启动keepalived
service keepalived restart
查看keepalived日志
tail -f /var/log/messages
都启动成功后,查看本服务器是否绑定VIP105
查看当前keepalived是否绑定VIP
命令 ip addr list
这里能看到,95服务器已经绑定了105VIP地址了,同理,启动备机的服务。
xx.xx190.105:8086/xxxxxx就可以访问了。
到这里就介绍完了,感兴趣的同学可以自己测试主备切换效果。
- keepalived+nginx实现高可用负载均衡部署
- nginx+keepalived实现高可用负载均衡
- Keepalived+Nginx实现负载均衡高可用
- Keepalived+Nginx实现负载均衡高可用
- Keepalived+Nginx实现负载均衡高可用
- Keepalived + nginx实现高可用负载均衡
- Nginx+keepalived 实现负载均衡,高可用
- Linux下部署lvs+keepalived实现高可用负载均衡
- 用NginX+keepalived实现高可用的负载均衡
- 用NginX+keepalived实现高可用的负载均衡
- 用NginX+keepalived实现高可用的负载均衡
- 用NginX+keepalived实现高可用的负载均衡
- Nginx+Keepalived实现站点高可用(负载均衡)
- centos6.5安装nginx+keepalived实现高可用负载均衡
- Dubbo-Keepalived + Nginx 实现高可用web负载均衡
- 用NginX+keepalived实现高可用的负载均衡
- 用NginX+keepalived实现高可用的负载均衡
- 使用nginx+keepalived实现https负载均衡以及高可用
- Codeforces 652C Foe Pairs【二分+RMQ】好像这题Dp做法很多啊
- [LeetCode]167. Two Sum II
- get_device和put_device ,以及of_node_get <->of_node_put
- (dwz)打开一个页面,再打开另一个页面,input框中出现本该隐藏的内容
- http接口幂等性
- keepalived+nginx实现高可用负载均衡部署
- 深入理解Lua的全局变量_G以及源码实现
- log4j详解与实战
- 从零开始搭建iOS项目框架
- 车牌定位算法
- android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file (code 14)
- 4G Memory windows x86 OS
- 关于Eclipse项目出现红色感叹号的解决
- java读写文件(简)