实验环境html
dockerhost01 192.168.10.150linux
dockerhost02 192.168.10.151nginx
vip 192.168.10.200docker
全新镜像,神马都没有,连sshd都没开,容我安装下ubuntu
开启SSH架构
sudo apt-get install openssh-client openssh-serverssh
sudo service ssh restartcurl
安装dockeride
先卸载旧版本url
sudo apt-get remove docker docker-engine docker.io
设置repo
sudo apt-get update
容许package 使用repo over HTTPS
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
添加GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
验证下指纹
sudo apt-key fingerprint 0EBFCD88
在repo中只使用stable版本
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
开始安装最新版docker ce
sudo apt-get update
sudo apt-get install docker-ce
sudo docker run hello-world
安装指定版本docker ce
apt-cache madison docker-ce
sudo apt-get install docker-ce=<VERSION>
下载nginx 镜像
sudo docker pull nginx:1.7.6
mkdir -p /tmp/docker
sudo echo "<h2 >This is nginx container running on 192.168.10.150 </h2><br /> static files:/tmp/docker/index.html" > /tmp/docker/index.html
sudo docker run --name nginx_m --restart=always -v /tmp/docker:/usr/share/nginx/html:ro -p 80:80 -d nginx:1.7.6
sudo docker ps
宿主机器访问下,2台主机都正常启动nginx了
安装keepalived
sudo apt-get update
sudo apt-get install -y libssl-dev openssl libpopt-dev
sudo apt-get install -y keepalived
sudo cp /usr/share/doc/keepalived/samples/keepalived.conf.sample /etc/keepalived/keepalived.conf
sudo vi /etc/keepalived/keepalived.conf
改这3个地方就行了
host01 中出现了10.200的vip
vip指向150,访问正常
sudo service keepalived status -l
host02 从backup 变成了master
host01网卡停掉以后,vip跑到了host02上
访问192.168.10.200的主机,显示nginx跑在了10.151上
固然主从能够设置weight 和nopreempt来设置是否夺权从新选举
当两个节点上的业务服务都处于启动状态,如httpd,那么优先级变化会以下:
当master节点业务启动,backup节点业务为中止状态,如,haproxy(由于haproxy没有监听的地址是没法启动的,其实不少业务都是两个节点一启一停的)
从架构来看,docker+nginx主从并不可以提供负载冗余功能,由于始终后台只有一台,只可以提供高可用,这个与我当时想法有所出入,因此目测整个解决方案只适合轻量化访问,可是轻量化的访问又不值得搞这两台主机作主备,作单机么又怕单点故障,因此整个解决方案比较尴尬
至于实验,整个实验和以前keepalived+nginx的实验并无太大区别,只是nginx跑在了docker上而已,docker的优点并无发挥出来,新的架构容我三思