keepalived+ngnix

keepalived+nginx实验来实现负载均衡

keepalived实现高可用
ngnix实现负载均衡

实验环境 rhel6.5 selinux and iptables disabled
高可用虚拟机:172.25.12.1 server1
172.25.12.1 server1
负载均衡虚拟机: 172.25.12.1 server3
172.25.12.1 server3
在server1上
所需软件包
nginx-1.8.1.tar.gz
keepalived-1.2.20.tar.gz

nginx的安装与配置
tar zxf nginx-1.8.1.tar.gz
cd nginx-1.8.1
注释掉dubuge
vim auto/cc/gcc
178 # debug
179 #CFLAGS=”$CFLAGS -g”
./configure –prefix=/usr/local/nginx
解决依赖
yum install -y gcc
yum install -y pcre-devel

make && make install
修改配置文件,配置文件如下:

[root@server1 log]# cat  /usr/local/nginx/conf/nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}
http {
 upstream westos {
server 172.25.12.3:80;
server 172.25.12.4:80;

    }
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;

        location / {

            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {
        listen 80;
    server_name www.westos.org;
    location / {
        proxy_pass http://westos;
    }
    }     
}

keepalived的安装与配置
tar zxf keepalived-1.2.20.tar.gz
cd keepalived-1.2.20
./configure –prefix=/usr/local/keepalived –with-init=SYSV
make && make install

ln -s /usr/local/keepalived/sbin/keepalived /sbin/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived   /etc/sysconfig/
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived   /etc/init.d/
 chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived

vim /etc/keepalived/keepalived.conf

[root@server1 opt]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

vrrp_script nginx_check {
    script /opt/nginx_check.sh
    interval 2

    }

global_defs {
   notification_email {
      root@localhost
   }

   notification_email_from keepalived@server4
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 12
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.12.200
    }
   track_script {
nginx_check

    }

}

keepalived调用的脚本

[root@server1 log]# cat /opt/nginx_check.sh
#!/bin/bash

curl http://127.0.0.1/index.html -o /dev/null -s || /usr/local/nginx/sbin/nginx

if [ $? -ne 0  ];then
/etc/init.d/keepalived stop &> /dev/null
fi

注意脚本要有执行权限

将安装好的ngnix和keepalived复制到另一个节点
cd /usr/local
scp -r nginx root@172.25.12.2:/usr/local
scp -r keepalived root@172.25.12.2:/usr/local
cd /opt/
scp nginx_check.sh root@172.25.12.2:/opt/

在server2 上查看 并修改keepalived的配置文件

[root@server2 opt]# ll nginx_check.sh
-rwxr-xr-x 1 root root 160 Jul 30 15:35 nginx_check.sh
[root@server2 opt]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

vrrp_script nginx_check {
    script /opt/nginx_check.sh
    interval 2

    }

global_defs {
   notification_email {
      root@localhost
   }

   notification_email_from keepalived@server2
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state BUCKUP
    interface eth0
    virtual_router_id 12
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.12.200
    }
   track_script {
nginx_check

    }

}

资源服务器:
server3:
[root@server3 ~]# yum install -y httpd
[root@server3 ~]# cd /var/www/html/
[root@server3 html]# ls
[root@server3 html]# echo server3 > index.html
[root@server3 html]# /etc/init.d/httpd start

server4:
[root@server4 ~]# yum install -y httpd
[root@server4 ~]# cd /var/www/html/
[root@server4 html]# ls
[root@server4 html]# echo server4-redhat > index.html
[root@server4 html]# /etc/init.d/httpd start

测试:
添加解析:
vim /etc/hosts
172.25.12.1 www.westos.org
测试:
[root@localhost day07]# curl www.westos.org
server3
[root@localhost day07]# curl www.westos.org
server4-redhat
在server1查看虚拟IP

[root@server1 nginx-1.8.1]# ip addr show eth0
1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:48:ea:87 brd ff:ff:ff:ff:ff:ff
    inet 172.25.12.1/24 brd 172.25.12.255 scope global eth0
    inet 172.25.12.200/32 scope global eth0
    inet6 fe80::5054:ff:fe48:ea87/64 scope link
       valid_lft forever preferred_lft forever

在server2上查看虚拟IP

[root@server2 opt]# ip addr show eth0
1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:6c:37:0b brd ff:ff:ff:ff:ff:ff
    inet 172.25.12.2/24 brd 172.25.12.255 scope global eth0
    inet6 fe80::5054:ff:fe6c:370b/64 scope link
       valid_lft forever preferred_lft forever

然后将servrer1的keepalived关掉,虚拟IP转到了server2,即server2接管了服务,然后在将server1的keepalived打开,服务又回切了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Keepalived是一个用于实现高可用性的软件,它可以在多个服务器之间共享一个虚拟IP地址,以确保在某个服务器故障时,其他服务器可以接管服务并继续提供服务。而Nginx是一个高性能的Web服务器,它可以作为反向代理服务器,将客户端请求转发到后端的多个Web服务器上,以实现负载均衡和高可用性。因此,将Keepalived和Nginx结合使用可以实现高可用性的Web服务。 具体实现步骤如下: 1. 在多台服务器上安装Nginx,并将Nginx配置为反向代理服务器,将客户端请求转发到后端的多个Web服务器上。 2. 在多台服务器上安装Keepalived,并将Keepalived配置为共享一个虚拟IP地址,以确保在某个服务器故障时,其他服务器可以接管服务并继续提供服务。 3. 编写一个脚本文件nginx_check.sh,用于检查Nginx是否正常运行,如果Nginx停止运行,则关闭Keepalived,以确保虚拟IP地址可以在其他服务器上接管服务。 参考上述引用和引用,可以看出具体实现步骤如下: 1. 将Nginx配置为反向代理服务器,将客户端请求转发到后端的多个Web服务器上。 2. 在多台服务器上安装Keepalived,并将Keepalived配置为共享一个虚拟IP地址,以确保在某个服务器故障时,其他服务器可以接管服务并继续提供服务。 3. 编写一个脚本文件nginx_check.sh,用于检查Nginx是否正常运行,如果Nginx停止运行,则关闭Keepalived,以确保虚拟IP地址可以在其他服务器上接管服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值