最近搭建keepalived双机热备, 在网上博采众之所长, 整理一下自己的笔记!
在新搭建的centos6.x下最好下载一下阿里云的源配置:
centos:http://mirrors.aliyun.com/help/centos
1、备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/
CentOS 5
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
CentOS 6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3、之后运行yum makecache生成缓存
===============================================================================================================================
准备2台电脑来做这个实验:
192.168.232.137 web服务器 keepalived nginx
192.168.232.138 web服务器 keepalived nginx
虚拟IP (VIP):192.168.232.17
虚拟IP (VIP):192.168.232.18
nginx下载地址: http://nginx.org/en/download.html
keepallived下载地址: http://www.keepalived.org/download.html
在137上:(ngnix和keepalived需要的依赖环境)
安装依赖:
su - root
yum -y install gcc gcc+ gcc-c++
OpenSSL: yum install -y openssl openssl-*
pcre库: yum install -y pcre pcre-devel
zlib库: yum install -y zlib zlib-devel
yum -y install lrzsz
yum -y install openssh-clients
yum -y install libssl-dev libnl libnl-devel
yum -y install popt popt-devel
安装内核:
yum -y install kernel kernel-devel*
===================================================================================================================================
1. 安装keepalived
/usr/local/下: wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
tar -zxvf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure --prefix=/usr/local/keepalived
make
make install
拷贝相应的文件
1.拷贝执行文件
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
2.将init.d文件拷贝到etc下,加入开机启动项
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
3.将keepalived文件拷贝到etc下,加入网卡配置
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
4.创建keepalived文件夹
mkdir -p /etc/keepalived
5.将keepalived配置文件拷贝到etc下
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
6.添加可执行权限
chmod +x /etc/init.d/keepalived
2.启动keepalived
启动:service keepalived start
停止:service keepalived stop
重启:service keepalived restart
3. 配置日志文件
1.将keepalived日志输出到local0:
vim /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -d -S 0"
2.在/etc/rsyslog.conf里添加:
local0.* /var/log/keepalived.log
3.重新启动keepalived和rsyslog服务:
service rsyslog restart
service keepalived restart
4. 打开防火墙的通讯地址
iptables -A INPUT -d 224.0.0.18 -j ACCEPT
/etc/rc.d/init.d/iptables save
===================================================================================================================================
1. 安装nginx
/usr/local/下: wget http://nginx.org/download/nginx-1.10.3.tar.gz
tar -zxvf linux-nginx-1.10.2.tar.gz
mkdir -p /var/temp/nginx
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
make
make install
whereis nginx
2.启动nginx
cd /usr/local/nginx/sbin/
./nginx
./nginx -s quit
查看进程: ps -ef|grep nginx
3.测试nginx
service iptables stop
chkconfig iptables off
访问: 192.168.200.137
4.配置nginx
配置虚拟主机
反向代理
负载均衡
upstream tomcat_server_pool{
server 192.168.101.5:8080 weight=10;
server 192.168.101.6:8080 weight=10;
}
server {
listen 80;
server_name aaa.test.com;
location / {
proxy_pass http://tomcat_server_pool;
index index.jsp index.html index.htm;
}
}
负载均衡特点:
转发
故障移除
恢复添加
高可用(keepalived + nginx实现主备)
配置高可用
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
#smtp_server 192.168.200.1 #指定smtp服务器地址
#smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh" ##监控脚本
interval 2 ##时间间隔,2秒
weight 2 ##权重
}
vrrp_instance VI_1 {
state MASTER #标示状态为MASTER 备份机为BACKUP
interface eth0 #设置实例绑定的网卡
virtual_router_id 51 #同一实例下virtual_router_id必须相同
priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 1111
}
track_script {
check_nginx ##监控脚本
}
virtual_ipaddress { #设置vip
#192.168.200.16 #可以多个虚拟IP,换行即可
192.168.200.17
}
}
vrrp_instance VI_2 {
state BACKUP
interface eth1
virtual_router_id 52
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.18
}
}
---------------------------------
vim /etc/keepalived/check_nginx.sh
#!/bin/bash
# 如果进程中没有nginx则将keepalived进程kill掉
A=`ps -C nginx --no-header |wc -l` ## 查看是否有 nginx进程 把值赋给变量A
if [ $A -eq 0 ];then ## 如果没有进程值得为 零
service keepalived stop ## 则结束 keepalived 进程
fi
chmod a+x /etc/keepalived/check_nginx.sh
配置nginx和keepalived开机启动:
https://www.cnblogs.com/whatmiss/p/7091220.html
vim /etc/init.d/nginx
#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
# It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/var/run/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
echo "nginx already running...."
exit 1
fi
echo -n $"Starting $prog: "
daemon $nginxd -c ${nginx_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
return $RETVAL
}
# Stop nginx daemons functions.
stop() {
echo -n $"Stopping $prog: "
killproc $nginxd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid
}
# reload nginx service functions.
reload() {
echo -n $"Reloading $prog: "
#kill -HUP `cat ${nginx_pid}`
killproc $nginxd -HUP
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|reload|status|help}"
exit 1
esac
exit $RETVAL
-----------------------------------------------------------------
chmod a+x /etc/init.d/nginx
chmod a+x /etc/init.d/keepalived
[root@localhost keepalived]# vim /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
/etc/init.d/nginx start
sleep 1
/etc/init.d/keepalived start
高可用测试:
先启动两台tomcat --->再启动两台nginx-->后启动两台keepalived
1.初始状态
vip192.168.200.17绑定在主nginx的eth0上(同时是vip192.168.200.18的备nginx)
/sbin/ip add show eth0
vip192.168.200.18绑定在主nginx的eth1上(同时是vip192.168.200.17的备nginx)。
/sbin/ip add show eth1
从而实现双主热备....
======================================================================================================================================
附录:
加入开机启动:
chkconfig --add keepalived #添加时必须保证/etc/init.d/keepalived存在
chkconfig keepalived on
添加完可查询系统服务是否存在:chkconfig --list
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nginx+负载均衡+keepalive+双机热备 - Python技术站