Docker-Swarm集群

创建环境

1.使用Vagrant方式

  Vagrantfile文件

Vagrant.require_version ">= 1.6.0"

boxes = [
	{
		:name => "swarm-manager",
		:eth1 => "192.168.88.100",
		:mem => "1024",
		:cpu => "1"
	},
	{
		:name => "swarm-worker1",
		:eth1 => "192.168.88.101",
		:mem => "1024",
		:cpu => "1"
	},
	{
		:name => "swarm-worker2",
		:eth1 => "192.168.88.102",
		:mem => "1024",
		:cpu => "1"
	}
]

Vagrant.configure(2) do |config|

  config.vm.box = "centos/7"

  boxes.each do |opts|
      config.vm.define opts[:name] do |config|
        config.vm.hostname = opts[:name]
        config.vm.provider "vmware_fusion" do |v|
          v.vmx["memsize"] = opts[:mem]
          v.vmx["numvcpus"] = opts[:cpu]
        end

        config.vm.provider "virtualbox" do |v|
          v.customize ["modifyvm", :id, "--memory", opts[:mem]]
          v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]
        end

        config.vm.network :private_network, type: "dhcp"
      end
  end

  config.vm.synced_folder "./labs", "/home/vagrant/labs"
  config.vm.provision "shell", privileged: true, path: "./setup.sh"

end

  setup.sh文件

#/bin/sh

# install some tools
sudo yum install -y wget
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum makecache
sudo yum -y update
sudo yum install -y git vim gcc glibc-static telnet bridge-utils net-tools

# install docker
sudo curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# start docker service
sudo groupadd docker
sudo usermod -aG docker vagrant
sudo rm -rf get-docker.sh

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://grlbs31g.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl start docker
sudo "Congratulations on your success!"

  创建机器

# 先装插件
vagrant plugin install vagrant-vbguest
# Vagrantfile文件所在目录执行
vagrant status
vagrant up

参考:https://github.com/limingios/docker

2. docker-machine方式

  安装Docker Toolbox

http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/

  创建机器

docker-machine create swarm-manager
docker-machine create swarm-worker1
docker-machine create swarm-worker2

搭建Swarm集群

# manager
docker swarm init --advertise-addr 192.168.88.100 
# worker1 & worker2
docker swarm join --token SWMTKN-1-1jtoogjh8go3dslv2zfbu7qqiz6xhs28qt3651nrdi206cwobp-e74f0yoqo6nwdxrdj3pfnkwkq 192.168.88.100:2377
# 如果要添加manager2,manager执行
docker swarm join-token manager
# manager2
docker swarm join --token SWMTKN-1-1jtoogjh8go3dslv2zfbu7qqiz6xhs28qt3651nrdi206cwobp-3y38tktkfpq86lhjf2hmswb6f 192.168.88.100:2377
# 查看节点信息
docker node ls

节点支持升级为manager、降级为worker、退出集群
docker node --help
docker swarm --help

  集群中创建容器

docker service create --name demo busybox sh -c "while true;do sleep 3600;done"
docker service ls
# 查看容器在集群中哪个节点中创建
docker service ps demo
# 横向扩展
docker service scale demo=5
docker service rm demo

  集群中跨机器的容器间通信

# 创建overlay驱动类型的网络
docker network create -d overlay demo
# 创建MySQL
docker service create --name mysql --network demo --env MYSQL_ROOT_PASSWORD=root --env MYSQL_DATABASE=wordpress --mount type=volume,source=mysql-data,destination=/var/lib/mysql mysql:5.7
# 创建Wordpress
docker service create --name wordpress --network demo -p 80:80 --env WORDPRESS_DB_PASSWORD=root WORDPRESS_DB_HOST=mysql wordpress
# 浏览器访问
192.168.88.100 192.168.88.101 192.168.88.102 都可以访问通

Routing Mesh两种方式  

  Internal:容器间通过overlay网络通信(DNS域名解析+VIP虚拟IP+Iptables防火墙+LVS负载均衡)   

# 查看DNS对应的VIP
nslookup mysql
# 查看VIP对象的容器真实IP
nslookup tasks.mysql

  Ingress:如果服务有绑定端口,则通过集群中各个节点IP:Port都可以访问到服务

猜你喜欢

转载自www.cnblogs.com/BINGJJFLY/p/12926612.html