当前位置: > Linux服务器 > nginx >

Centos下安装、Nginx笔记(三) 代理服务器keepalived的安装及配置

时间:2014-05-15 02:05来源:linux.it.net.cn 作者:it

那准备开始
      三、搭建nginx代理服务器集群,实现热备;

1、环境准备

Nginx反向代理服务器-主:

系统 Centos 5.4 + ngix 

外网IP: 60.x.x.13

内网IP: 192.168.10.13

 

Nginx反向代理服务器-从:

 

系统 Centos 5.4 + ngix  ( 参考Centos下安装、Nginx笔记(一) 简单安装, Centos下安装、Nginx笔记(二) 简单负载均衡搭建好)

外网IP: 60.x.x.14

内网IP: 192.168.10.14

 


反向代理主服务器与反向代理从服务器 使用共同的集群(虚拟)IP: 60.x.x.15

 

web1服务器:

系统: windows 2003  IIS 

内网 ip: 192.168.10.2 

 

web2服务器:

系统windows 2003+IIS 

内网 ip 192.168.10.3   (2/3的页面内容设置不一样以便最后测试的时候进行查看)


A) 先代理主服务器操作:

安装配置Keepalived

 

软件源代码包存放位置:/usr/local/src

源码包编译安装位置:/usr/local/软件名字

 

1).下载所需要的软件

#wget http://keepalived.org/software/keepalived-1.2.7.tar.gz

#wget http://rpm5.org/files/popt/popt-1.16.tar.gz

 

2) .安装popt

编译keepalived时需要popt,否则会报以下错误:

configure: error: Popt libraries is required

 

#tar -zxvf popt-1.16.tar.gz

#cd popt-1.16

#./configure

#make

#make install

 

3.安装keepalived

#tar -zxvf keepalived-1.2.7.tar.gz

#cd keepalived-1.2.7

#./configure --prefix=/usr/local/keepalived

#make

#make install

 

4.修改配置文件为以下内容:

 

#vim /usr/local/keepalived/etc/keepalived/keepalived.conf

------------------------------------keepalived.conf----------------------------------------


点击(此处)折叠或打开

  1. ! Configuration File for keepalived
  2.  
  3.  
  4.  
  5. global_defs {
  6.  
  7. router_id LVS_DEVEL
  8.  
  9. }
  10.  
  11. vrrp_script Monitor_Nginx {
  12.  
  13. script "/root/scripts/monitor_nginx.sh" #monitor_nginx.sh为监控nginx进程的脚本, 根据自己的实际路径放置
  14.  
  15. interval 2
  16.  
  17. weight 2
  18.  
  19. }
  20.  
  21. vrrp_instance VI_1 {
  22.  
  23. state MASTER #主机为MASTER,备用机为BACKUP
  24.  
  25. interface eth0 #(HA监测网络接口)
  26.  
  27. virtual_router_id 51 #(主、备机的virtual_router_id必须相同)
  28.  
  29. priority 100 #(主、备机取不同的优先级,主机值较大,备份机值较小,值越大优先级越高)
  30.  
  31. advert_int 1 #(VRRP Multicast广播周期秒数)
  32.  
  33. authentication {
  34.  
  35. auth_type PASS #(VRRP认证方式)
  36.  
  37. auth_pass 1234 #(主、备机密码必须相同)
  38.  
  39. }
  40.  
  41. track_script {
  42.  
  43. Monitor_Nginx #调用nginx进程检测脚本 vrrp_script Monitor_Nginx
  44.  
  45. }
  46.  
  47. virtual_ipaddress {
  48.  
  49. 60.x.x.15 #(VRRP HA虚拟地址,既集群IP地址)
  50.  
  51. }
  52.  
  53. }


 

vi /root/scripts/monitor_nginx.sh

=====================================


点击(此处)折叠或打开

  1. #!/bin/bash
  2.  
  3. if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
  4.  
  5. then
  6.  
  7. /usr/local/nginx/sbin/nginx
  8.  
  9. sleep 5
  10.  
  11. if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
  12.  
  13. then
  14.  
  15. killall keepalived
  16.  
  17. fi
  18.  
  19. fi


=======================================

#chmod +x monitor_nginx.sh

#nohup/bin/bash /root/scripts/monitor_nginx.sh &

 

网上看到有个兄弟写的关于运行脚本的个人想法,我就拿过来试了:

然后置于后台运行 sh /root/monitor_nginx.sh &,这种写法是错误的,这样你用root用户logout后,此进程会消失;正确写法为nohup/bin/bash /root/monitor_nginx.sh &,附带下注释:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出root帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)

 

==================================================


 建立服务启动脚本,以便使用service命令控制之
方法一:

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/sbin/keepalived /bin/

chkconfig --add keepalived

chmod 755 /etc/init.d/keepalived

chkconfig keepalived on

service keepalived start


方法二:

1、

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived

 

chmod +x /etc/init.d/keepalived

 

因为我们使用非默认路径(/usr/local)安装keepalived, 故需要修改几处路径,以保证keepalived能正常启动, 需要修改的文件如下:

 

2. 修改/etc/init.d/keepalived, 寻找大约15行左右的. /etc/sysconfig/keepalived, 修改为:

.  /usr/local/keepalived/etc/sysconfig/keepalived, 即指向正确的文件位置

 

同时在上述行下添加以下内容(将keepavlied主程序所在路径导入到环境变量PATH中):

 

PATH="$PATH:/usr/local/keepalived/sbin"

 

export PATH

 

3. 修改/usr/local/keepalived/etc/sysconfig/keepalived文件,设置正确的服务启动参数

KEEPALIVED_OPTIONS="-D -f /usr/local/keepalived/etc/keepalived/keepalived.conf"

 

 

4. 经过以上修改,keepalived基本安装即可完成,启动测试之:

service keepalived restart

 

5. 切勿忘记将此服务设置为开机启动

chkconfig keepalived on

========================================================================


B) 代理从服务器操作:

除了keepalived.conf 配置有点差异,其他安装步骤参考主服务器

#vim /usr/local/keepalived/etc/keepalived/keepalived.conf

------------------------------------keepalived.conf----------------------------------------


点击(此处)折叠或打开

  1. ! Configuration File for keepalived
  2.  
  3.  
  4.  
  5. global_defs {
  6.  
  7. router_id LVS_DEVEL
  8.  
  9. }
  10.  
  11. vrrp_script Monitor_Nginx {
  12.  
  13. script "/root/scripts/monitor_nginx.sh" #monitor_nginx.sh为监控nginx进程的脚本, 根据自己的实际路径放置
  14.  
  15. interval 2
  16.  
  17. weight 2
  18.  
  19. }
  20.  
  21. vrrp_instance VI_1 {
  22.  
  23. state BACKUP #主机为MASTER,备用机为BACKUP,不一致处
  24.  
  25. interface eth0 #(HA监测网络接口)
  26.  
  27. virtual_router_id 51 #(主、备机的virtual_router_id必须相同)
  28.  
  29. priority 50 #(主、备机取不同的优先级,主机值较大,备份机值较小,值越大优先级越高),不一致处
  30.  
  31. advert_int 1 #(VRRP Multicast广播周期秒数)
  32.  
  33. authentication {
  34.  
  35. auth_type PASS #(VRRP认证方式)
  36.  
  37. auth_pass 1234 #(主、备机密码必须相同)
  38.  
  39. }
  40.  
  41. track_script {
  42.  
  43. Monitor_Nginx #调用nginx进程检测脚本 vrrp_script Monitor_Nginx
  44.  
  45. }
  46.  
  47. virtual_ipaddress {
  48.  
  49. 60.x.x.15 #(VRRP HA虚拟地址,既集群IP地址)
  50.  
  51. }
  52.  
  53. }


C、测试环节
                       集群IP: 60.x.x.15
         _____________|_____________
60.x.x.13                                         60.x.x.14                             
 主代理nginx                                    从代理nginx                          
192.168.10.13                               192.168.10.14                        
                 ---------------|-----------------                   
  web1: 192.168.10.2                      web2: 192.168.10.3

注明:

      在Centos下安装、Nginx笔记(二) 简单负载均衡已经说明,

      访问代理服务器http://60.x.x.13访问的是Nginx代理服务器自身的网站

      访问代理服务器http://60.x.x.13:8800时实现跳转到内网2台web服务器进行负载;

 

看简单拓扑图,现测试内容如下:

修改主代理服务器nginx/html/index.html内容编辑为 这是60.x.x.13主服务器:

修改从代理服务器nginx/html/index.html内容编辑为 这是60.x.x.14从服务器:

修改web1服务器: index.html内容编辑为 这是web1:192.168.10.2服务器
修改web2服务器: index.html内容编辑为 这是web1:192.168.10.3服务器

1.    访问VIP60.x.x.15:8800看是否能够正常访问后端的web1/web2
        访问VIP60.x.x.15看是否能够正常访问nginx服务器的web     

2.    停止其中一个web看是否能将访问转到另一台上

3.    停止两台nginx上任何一个nginx进程看监控进程脚本是否会自动启动nginx

4.    停止任何一台nginx上的keepalived进程看另一台是否接管vip60.x.x.15

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容