Vagrant体验之一nginx+keepalived高可用测试
来源:互联网 发布:新手怎么做淘宝刷好评 编辑:程序博客网 时间:2024/06/08 15:44
官网: 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_testcd ha_testvagrant 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" endend
配置文件设置ok,就可以启动服务器了。
#启动vagrant up web1vagrant up web2#登录vagrant ssh web1vagrant ssh web2
二. vms环境配置
登录进去,首先看一下ip,ipconfig如下:
另一个服务器只是eh1的ip地址不一样。可以看到两个服务器的默认eth0的配置都一样,连ip都一样:10.0.2.15,所以我们需要一个private_network来创建eth1,用于两个服务的通讯需要。
安装测试必要软件:
sudo apt-get updatesudo 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/bashA=`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 fifi
sudo chmod +x check_nginx.sh
启动nginx和keepalived
sudo service nginx startsudo 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
- Vagrant体验之一nginx+keepalived高可用测试
- KeepAlived高可用Nginx
- nginx+keepalived 高可用方案
- nginx+keepalived实现高可用
- Keepalived+Nginx高可用集群
- keepalived+nginx+tomcat高可用
- Nginx之Keepalived高可用
- nginx+keepalived 高可用方案
- Keepalived+Nginx实现高可用
- keepalived+nginx的高可用
- 高可用集群Keepalived + nginx
- nginx+keepalived实现高可用
- keepalived+nginx实现nginx的高可用
- Nginx高可用使用Keepalived+nginx实现
- nginx和keepalived实现nginx高可用
- nginx+keepalived配置高可用HTTP群集
- Nginx + keepalived 高可用配置文档
- nginx+keepalived 高可用负载均衡
- ASP.net textbox输入自动转换大小写字母
- Domino邮件安全体系加固配置方案一瞥
- ExtJs 4.1 GridPanel学习
- 计算机图形学 -- 基本图形 [之二] [glBegin参数Mode的应用] [圆,五角星,菱形等]
- Error: A project with an Output Type of Class Library cannot be started directly
- Vagrant体验之一nginx+keepalived高可用测试
- jquery.cookie.js 用法
- Openwrt研习笔记三之源码的下载和编译
- [MySQL生产环境复制故障修复] Last_IO_Errno: 1045 Last_IO_Error: error connecting to master 'replication@
- 常用到ubuntu命令1
- 设计模式(c++)笔记之十五(State模式)
- 关于git 仓库的创建
- Bit、Byte、Word、DWord之间的关系
- Micro2440 内核定制实践1