设为首页 收藏本站
查看: 1463|回复: 0

[经验分享] Vagrant体验之一nginx+keepalived高可用测试

[复制链接]

尚未签到

发表于 2015-11-19 15:32:18 | 显示全部楼层 |阅读模式
  官网: www.vagrantup.com
  github: https://github.com/mitchellh/vagrant
  vagrant是个好东西,之前由于网络环境原因,在本地环境安装warden失败,用vagrant轻松搞定,抽空好好体验下。
  如果想做些集群或单机测试,可是没有服务器资源,或是远程操作太繁琐。那么vagrant就就派上用场,可以在本机实现最小单元的集成。
  这次先测试下nginx+keepalived的高可用。
  


  集群配置:
  VIP: 192.168.50.5
  nginx1: 192.168.50.3  主
  nginx2: 192.168.50.4  备
  宿主机环境:ubuntu

一. vargrant 配置

     1. 前提
  安装vagrant 、vitualBox
  vagrant的provider之一就是用vitualbox,所以要先安装它:https://www.virtualbox.org/wiki/Linux_Downloads
  vagrant之前用gem来安装,但是依赖太多,安装太费用,后来直接deb安装了。http://downloads.vagrantup.com/
  


  下载deb包到本地,dpkg -i xx.deb安装就ok了。

    2. 配置
  

#初始化
mkdir  ha_test
cd ha_test
vagrant init #在目录下会生成Vagrant配置文件

#下载box
#vagrant  是利用vitualbox来安装的,那必要有个系统镜像。vagrant已经有了,直接下载,这里下载个32位的ubuntu base box   
wget  http://files.vagrantup.com/precise32.box

#将box加入到vagrant管理:
vagrant box add precise32 $precise32.box_url
#可以查看下:
vagrant box list
  


  
  
  编辑Vagrant配置文件,
  

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.define "web1" do |web1|
web1.vm.box = "precise32"
web1.vm.network "private_network", ip: "192.168.50.4"
end
config.vm.define "web2" do |web2|
web2.vm.box = "precise32"
web2.vm.network "private_network", ip: "192.168.50.3"
end
end
  
  



定义了两个服务器,用的系统都是之前下载的precies32,同时配置了private_network,是为了两个服务器之间可以通讯。  

配置文件设置ok,就可以启动服务器了。
  

#启动
vagrant up web1
vagrant up web2
#登录
vagrant ssh web1
vagrant ssh web2
  



二. vms环境配置
  


  登录进去,首先看一下ip,ipconfig如下:
  


DSC0000.jpg


  


  另一个服务器只是eh1的ip地址不一样。可以看到两个服务器的默认eth0的配置都一样,连ip都一样:10.0.2.15,所以我们需要一个private_network来创建eth1,用于两个服务的通讯需要。
  安装测试必要软件:
  

sudo apt-get update
sudo apt-get install keepalived nginx curl



  
  配置keepalived
  在/etc/keepalived目录下创建配置文件keepalived.conf
  

vrrp_script chk_nginx {  
script "/etc/keepalived/check_nginx.sh" # 判断nginx状态
interval 2  
weight 2  
}  
global_defs {  
notification_email {  
test@gmail.com     #发给谁
}  
notification_email_from test@gmail.com
smtp_server smtp.jd.com
smtp_connect_timeout 30
router_id nginx_master
}  
vrrp_instance VI_NODE {  
state MASTER           #另一服务器为BACKUP   
interface eth1         #必要用以服务器之间通讯的eth1,而不是默认的eth0
virtual_router_id 100  #BACKUP配置与这一样
priority 200           #BACKUP要比它小
advert_int 1  
authentication {  
auth_type PASS  
auth_pass jaev21qaz2wsx  
}  
track_script {  
chk_nginx
}  
virtual_ipaddress {  
192.168.50.5    #VIP,启动keepalived后,ip a 查看
}  
}


nginx check脚本:check_nginx.sh  
  

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/etc/init.d/nginx start
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi


sudo chmod +x  check_nginx.sh  
  


  启动nginx和keepalived
  

sudo service nginx start
sudo service keepalived start

在主服务器上,ip a ,看到vip信息:  
  

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:ba:4f:e4 brd ff:ff:ff:ff:ff:ff
inet 192.168.50.3/24 brd 192.168.50.255 scope global eth1
inet 192.168.50.5/32 scope global eth1
inet6 fe80::a00:27ff:feba:4fe4/64 scope link
valid_lft forever preferred_lft forever


在两台服务器上 都执行  curl http://192.168.50.5 ,可以显示nginx 的默认页面。至少说明vip生效。  
  



三. 测试高可用
  


  预期:关闭主的nginx,VIP会被备服务器接管。curl   http://192.168.50.5 也是可以通的,证明高可用。
  


  #主
  sudo service nginx stop
  #主
  ip a
  

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:ba:4f:e4 brd ff:ff:ff:ff:ff:ff
inet 192.168.50.3/24 brd 192.168.50.255 scope global eth1
inet6 fe80::a00:27ff:feba:4fe4/64 scope link
valid_lft forever preferred_lft forever

  
  #备
  ip a
  

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:b8:81:8f brd ff:ff:ff:ff:ff:ff
inet 192.168.50.4/24 brd 192.168.50.255 scope global eth1
inet 192.168.50.5/32 scope global eth1
inet6 fe80::a00:27ff:feb8:818f/64 scope link
valid_lft forever preferred_lft forever



  
  #主,备
  curl   http://192.168.50.5  


  


  但是很快,VIP又被主服务器抢去了,这是因为check_nginx.sh的原因,会先尝试去启动nginx,启起来之后,主又是主了,如果nginx启动不了,就会同时将keepalived也停止,这时VIP才真正被备服务器接管。
  


  



四. 其它
  


  #保存退出
  vagrant halt web1
  #挂起
  vagrant supend web1
  #销毁
  vagrant destroy web1
  


  vagrant还有很多功能没有用到,下回继续。
  


  微博:http://weibo.com/kingjames3
  



版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-141263-1-1.html 上篇帖子: keepalived+twemproxy部署redis高可用集群 下篇帖子: keepalived健康检查方式配置笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表