CentOS 7.X 部署Swarm

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS 7.X 部署Swarm相关的知识,希望对你有一定的参考价值。

1、简介

在已安装docker的基础上
如果swarm集群中只有一个管理节点,该管理节点如果宕机或者离开集群环境,那么该集群就不存在了。所以在一个具有N个管理节点的集群环境中,一定有管理节点总数的50%以上的节点来处理请求和保持可用。
Swarm中的管理节点都是通过实现Raft一致性算法来管理所有节点的状态。通过实现Raft Consensus Algorithm,可以确保集群中的所有任务、存储等都是一致的状态
通常情况下,一个Raft 集群包括了若干个服务器。在给定的任意时间点上,每个服务器都处在以下三种状态的一种:指挥者、跟随者,或候选者。在一般操作中,一定会有一个指挥者,剩下的服务器都是跟随者。跟随者是被动的:它们自己不提交任何需求,仅仅响应指挥者和候选者提出的需求。指挥者处理所有的客户端需求(如果客户端向跟随者发送了需求,跟随者会把它转交给指挥者)。至于第三种状态——候选者——则是用来选举一个新的指挥者。Raft 用一种心跳机制来触发指挥者选举。当服务器启动时,它们先从跟随者做起,并会在接收到指挥者或候选者发送的有效RPC 协议(远程过程调用协议)之前,一直执行跟随者的工作。指挥者定时向全体跟随者发送心跳信息,以保持它们的授权。如果一个跟随者超过一定时间没有接收到心跳信息(这段时间称为“选举超时”),它就会假设指挥者已经失效,然后启动选举,来选择一个新的指挥者。

2、配置

1.初始化集群
sudo docker swarm init --advertise-addr 192.168.56.102

2.创建集群网络
sudo docker network create -d overlay --subnet=10.0.10.0/24 --attachable well

3.节点加入集群
docker swarm join --token SWMTKN-1-0tixq1sc9nzs02hrinrl5710qs14b6qfz1ey2be92i6l1xde72-c7kogarn0vmobiih7f6le7fjk 192.168.56.102:2377

4.删除集群
sudo docker swarm leave --force

5.提升节点为备用管理节点(备用节点需要超过总节点半数HA生效)
sudo docker node promote docker

6.创建服务
6.1.通过标签限制节点运行
sudo docker node update --label-add env=proxy mece1
sudo docker node update --label-add env=proxy mece2
sudo docker service create --name zhao2 --hostname zhao2 -p 9000:5000 --network well --replicas 20 --constraint node.labels.env!=proxy registry

6.2.通过hostname限制节点运行
sudo docker service create --name registry --hostname registry -p 5000:5000 --network zhao --replicas 4 --constraint node.hostname!=mece1 --constraint node.hostname!=mece2 registry

6.3.通过label运行
sudo vi /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock --insecure-registry 192.168.209.0/24 --label hostname=master
sudo systemctl daemon-reload
sudo systemctl restart docker
docker service create --name web --replicas 4 --constraint engine.labels.hostname==master nginx

7.更新服务
sudo docker service update --replicas 5 --image registry registry

8.服务示例
8.1.nginx服务
docker run -d --name nginx-proxy1 --hostname nginx-proxy1 --network test --restart=always -p 80:80 -p 443:443 -v /data/conf/nginx.conf:/etc/nginx.conf -v /data/ssl:/ssl registry.test.com/nginx:1.12.2

8.2.registry服务
docker run -d --name registry --hostname registry --network test --restart=always -p 5000:5000 -v /data/registry:/var/lib/registry registry.test.com/registry:2.0

8.3.portainer服务(IE访问)
docker run -d --name portainer --hostname portainer --network test --restart=always -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock registry.test.com/portainer:2.0

8.4.zookeeper服务
docker run -d --name zk1.test.com --hostname zk1.test.com --network test --restart=always -e SERVER_ID=1 -e ADDITIONAL_ZOOKEEPER_1=server.1=zk1.test.com:2888:3888 -e ADDITIONAL_ZOOKEEPER_2=server.2=zk2.test.com:2888:3888 -e ADDITIONAL_ZOOKEEPER_3=server.3=zk3.test.com:2888:3888 registry.test.com/zookeeper:3.4.11

8.5.dubbo服务
docker service create --name settlementweb-jar --hostname settlementweb-jar --network test registry.test.com/jdk:1.8u162

8.6.tomcat服务
docker service create --name merchantpcweb-war --hostname merchantpcweb-war --network test registry.test.com/tomcat:9.0.6

8.7.redis服务
docker run -d --name redis1.test.com --hostname redis1.test.com --network test -v /data/redis:/data/redis/data --restart=always --ip 10.0.9.210 registry.test.com/redis:3.0.6

9.helathcheck使用
docker run --rm -d \\
--name=elasticsearch \\
--health-cmd="curl --silent --fail localhost:9200/_cluster/health || exit 1" \\
--health-interval=5s \\
--health-retries=12 \\
--health-timeout=2s \\
elasticsearch:5.5
备注:
--interval=<间隔>:两次健康检查的间隔,默认为30秒
--timeout=<间隔>:健康检查命令运行超时时间,如果超过这个时间,本次健康检查就被视为失败,默认30秒
--retries=<次数>:当连续失败指定次数后,则将容器状态视为unhealthy,默认3次
--start-period=<间隔>: 应用的启动的初始化时间,在启动过程中的健康检查失效不会计入,默认0秒; (从17.05)引入

centos安装部署Swarm Bee V0.5.3教程

创建目录

 mkdir -p /mnt/bee
 cd /mnt/bee

1.首先jq安装:

yum install -y jq

2.下载bee和bee-clef安装包:

wget https://github.com/ethersphere/bee/releases/download/v0.5.3/bee_0.5.3_amd64.rpm

wget https://github.com/ethersphere/bee-clef/releases/download/v0.4.9/bee-clef_0.4.9_amd64.rpm

国内下载地址:

wget http://47.113.226.225/bee/bee_0.5.3_amd64.rpm
wget http://47.113.226.225/bee/bee-clef_0.4.9_amd64.rpm
wget http://47.113.226.225/bee/cashout.sh

3.先安装bee-clef:

sudo rpm -i bee-clef_0.4.9_amd64.rpm

再安装bee:

sudo rpm -i bee_0.5.3_amd64.rpm

4.安装完成后,输入命令 获取自己的钱包地址

sudo bee-get-addr

在这里插入图片描述
5.拿到自己的钱包地址0xd82a9513dd3438e91fe2aad81c716a0b8f3c7d16(上图红线部分)去水龙头接水,推荐使用官方的discord中#faucet-request频道接水:

接水教程:https://www.yundongfang.com/Yun41872.html

6.在区块浏览器

https://goerli.etherscan.io/address/0xd82a9513dd3438e91fe2aad81c716a0b8f3c7d16 

中看到自己的地址已经领到了10个gBZZ:

7.注册一个swap-endpoint地址:https://infura.io
注册视频教程:https://www.bilibili.com/video/BV1EV411Y7yM
第7分钟开始看。
拿到Goerli的的swap-endpoint地址:https://goerli.infura.io/v3/*********

8.编辑bee.yaml

 sudo vi /etc/bee/bee.yaml

按一下键盘上的i,找到swap-endpoint 替换为步骤7中的swap-endpoint地址:

在这里插入图片描述
之后按一下键盘上的ESC按键,接着按键盘上冒号输入wq,然后按回车键保存成功。
配置文件的文本内容如下:

clef-signer-enable: true
clef-signer-endpoint: /var/lib/bee-clef/clef.ipc
config: /etc/bee/bee.yaml
data-dir: /var/lib/bee
debug-api-addr: 127.0.0.1:1635
debug-api-enable: true
password-file: /var/lib/bee/password
swap-enable: true
swap-endpoint: https://goerli.infura.io/v3/fe00e6f4a50b4a2********

9.启动bee
权限设置

sudo chown -R bee:bee /var/lib/bee

启动bee:

sudo systemctl start bee

查看bee-clef日志

journalctl -u bee-clef -f

在这里插入图片描述

查看bee日志

journalctl -u bee -f

在这里插入图片描述

10.查看信息
查看连接bee状态

curl http://localhost:1633

在这里插入图片描述

查看连接的对等节点数

curl -s http://localhost:1635/peers | jq '.peers | length'

在这里插入图片描述
查看自己的钱包地址
curl -s localhost:1635/addresses | jq .ethereum

查看自己的支票合约账本地址
curl -s http://localhost:1635/chequebook/address | jq .chequebookaddress

查看看票据

curl localhost:1635/chequebook/cheque | jq

11.提取支票操作
下载cashout.sh脚本并赋予执行权限(全部复制下面内容)

wget -O cashout.sh https://gist.githubusercontent.com/ralph-pichler/3b5ccd7a5c5cd0500e6428752b37e975/raw/b40510f1172b96c21d6d20558ca1e70d26d625c4/cashout.sh && chmod +x cashout.sh 

由于脚本中默认提取的支票价值最小是1 GBZZ,所以即使有支票也很难达到提取阈值,这里我们稍微修改下提取的最小价值:

sudo vim cashout.sh

按一下键盘上的i,把MIN_AMOUNT改为10000

在这里插入图片描述
之后按一下键盘上的ESC按键,接着按键盘上冒号输入wq,然后按回车键保存成功。

添加权限

 chmod 777 cashout.sh

查看是否有支票

./cashout.sh

在这里插入图片描述
目前没有支票,如果上图有返回数据,执行支票提取

./cashout.sh cashout-all

在这里插入图片描述
有用的命令
查看bee-clef 和 bee 启动状态
sudo systemctl status bee-clef
sudo systemctl status bee
启动命令需要按照顺序执行,先启动bee-clef 在启动bee
sudo systemctl start bee-clef
sudo systemctl start bee
停止运行
sudo systemctl stopbee
sudo systemctl stop bee-clef
查看bee-clef日志和bee日志
journalctl -u bee-clef -f
journalctl -u bee -f

以上是关于CentOS 7.X 部署Swarm的主要内容,如果未能解决你的问题,请参考以下文章

Docker Swarm实战初探

Docker Swarm实战初探

Docker Swarm实操初战

docker swarm集群部署

CentOS 7.X部署Tomcat

CentOS 7.X部署Yearning