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的主要内容,如果未能解决你的问题,请参考以下文章