前言:
最近开发一个web,服务器上面安装了其他的一些外包项目,然后服务器就被被攻击了,导致我自己做的web一度瘫痪,还得赶急赶忙的去恢复项目。为了让下次不再出现这种情况于是决定做一个nginx转发,当正式服务器宕机的时候开启备用服务器继续工作。用户无感知的那种。
建立反向代理
http{
upstream abc{
server 192.168.1.100;
server 192.168.1.110;
server 192.168.1.120;
ip_hash;
}
server {
listen 80;
server name www.linuxidc.com;
location / {
proxy_pass http://abc;
}
}
** 反向代理建立之后,访问www.linuixidc.com会间接访问abc中的服务器地址,ngnix通过将所有的请求转发至abc中的服务器,通过abc中的服务器处理完成之后将返回的消息返回给abc这台服务器,然后再将消息返回给客户端。**
# keeplive 监控ngnix是否正常运行
安装keepalive:
tar zxvf keepalived-1.2.7.tar.gz
cd keepalived-1.2.7
./configure
make
make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
配置文件:/etc/keepalived/keepalived.conf
主服务器配置:
! Configuration File for keepalived
global_defs {
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
50.1.1.2
}
}
从服务器配置:
! Configuration File for keepalived
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
50.1.1.2
}
}
脚本配置:/opt/chk_nginx.sh (keepalive监控nginx的脚本状态)
#!/bin/sh
# check nginx server status
NGINX=/usr/local/nginx/sbin/nginx
PORT=80
nmap localhost -p $PORT | grep "$PORT/tcp open"
#echo $?
if [ $? -ne 0 ];then
$NGINX -s stop
$NGINX
sleep 3
nmap localhost -p $PORT | grep "$PORT/tcp open"
[ $? -ne 0 ] && /etc/init.d/keepalived stop
fi
keepalived.conf添加配置:
vrrp_script chk_http_port {
script "/opt/chk_nginx.sh"
interval 2
weight 2
}
track_script {
chk_http_port
}
更进一步,为了避免启动keepalived之前没有启动nginx , 可以在/etc/init.d/keepalived的start中首先启动nginx:
start() {
/usr/local/nginx/sbin/nginx
sleep 3
echo -n $"Starting $prog: "
daemon keepalived ${KEEPALIVED_OPTIONS}
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
}
转载自:用NginX+keepalived实现高可用的负载均衡