zookeeper+mesos+docker+swarm

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

zookeeper 集群安装

1、下载

wget http://mirrors.cnnic.cn/apache/zookeeper/stable/zookeeper-3.4.8.tar.gz


2、解压

mkdir /usr/local/zookeeper && tar zxvf zookeeper-3.4.8.tar.gz && mv zookeeper-3.4.8/* /usr/local/zookeeper ** rm -rf zookeeper-3.4.8


3、创建配置文件

Zookeeper文件配置详解

dataDir:数据目录

dataLogDir:日志目录

clientPort:客户端连接端口

tickTime:Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。

initLimit:Zookeeper的Leader 接受客户端(Follower)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒

syncLimit:表示 Leader 与 Follower 之间发送消息时请求和应答时间长度,最长不能超过多少个tickTime 的时间长度,总的时间长度就是 2*2000=4 秒。

server.A=B:C:D:

A 是一个数字,表示这个是第几号服务器;

B 是这个服务器的 ip 地址;

C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;

D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口



cd /usr/local/zookeeper/conf


vim /usr/local/zookeeper/conf/zk1.cfg


tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper/zk1/data

dataLogDir=/data/zookeeper/zk1/logs

clientPort=2181

server.1=10.10.16.194:3181:4181

server.2=10.10.16.194:3182:4182

server.3=10.10.16.194:3183:4183


echo "1" >/data/zookeeper/zk1/data/myid




vim /usr/local/zookeeper/conf/zk2.cfg


tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper/zk2/data

dataLogDir=/data/zookeeper/zk2/logs

clientPort=2182

server.1=10.10.16.194:3181:4181

server.2=10.10.16.194:3182:4182

server.3=10.10.16.194:3183:4183


echo "2" >/data/zookeeper/zk2/data/myid




vim /usr/local/zookeeper/conf/zk3.cfg


tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper/zk3/data

dataLogDir=/data/zookeeper/zk3/logs

clientPort=2183

server.1=10.10.16.194:3181:4181

server.2=10.10.16.194:3182:4182

server.3=10.10.16.194:3183:4183


echo "3" >/data/zookeeper/zk3/data/myid



4、启动Zookeeper

/usr/local/zookeeper/bin/zkServer.sh start /usr/local/zookeeper/conf/zk1.cfg

/usr/local/zookeeper/bin/zkServer.sh start /usr/local/zookeeper/conf/zk2.cfg

/usr/local/zookeeper/bin/zkServer.sh start /usr/local/zookeeper/conf/zk3.cfg


5、查看Zookeeper状态

/usr/local/zookeeper/bin/zkServer.sh status /usr/local/zookeeper/conf/zk1.cfg

/usr/local/zookeeper/bin/zkServer.sh status /usr/local/zookeeper/conf/zk2.cfg

/usr/local/zookeeper/bin/zkServer.sh status /usr/local/zookeeper/conf/zk3.cfg





Mesos集群部署

1、安装Mesosphere仓库到本地

rpm -Uvh http://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpm


2、Mesos Master部署

yum -y install mesos


配置Mesos连接Zookeeper文件

vim /etc/mesos/zk

zk://10.10.16.194:2181,10.10.16.194:2182,10.10.16.194:2183/mesos

systemctl start mesos-master mesos-slave



3、Mesos Slave部署

yum -y install mesos


echo 10.10.16.193 > /etc/mesos-slave/hostname

echo "mesos,docker" > /etc/mesos-slave/containerizers


vim /etc/mesos/zk

zk://10.10.16.194:2181,10.10.16.194:2182,10.10.16.194:2183/mesos


systemctl start mesos-slave

修改/etc/mesos-slave/hostname后无法启动问题,删除rm -rf /var/lib/mesos/meta/*后再重启即可




Dokcer  swarm 部署

1、下载swarm

docker pull swarm

2、启动swarm

docker run -d --net=host swarm --debug manage -c mesos-experimental --cluster-opt mesos.address=10.10.16.194 --cluster-opt mesos.tasktimeout=100s  --cluster-opt mesos.user=root --cluster-opt mesos.offertimeout=10m --cluster-opt mesos.port=3375 --cluster-opt mesos.enablerevocable=true --host=0.0.0.0:4375 zk://10.10.16.194:2181,10.10.16.194:2182,10.10.16.194:2183/mesos

3、运行容器

docker -H 10.10.16.194:4375 run -d -m 512m -e constraint:res-type==~regular  docker.16qian.cn/niu-ding-feng/product-service-web_prd_1.0.1



CONSUL安装

1、下载CONSUL以及web ui

https://www.consul.io/downloads.html


2、解压后启动服务

在server服务器执行启动命令

./consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n1 -bind=10.10.16.194 -ui-dir /root/web_ui -dc=dc1 -client=10.10.16.194 &

./consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n2 -bind=10.10.16.193 -ui-dir -dc=dc1 &

在10.10.16.193服务器执行以下命令

./consul join 10.10.16.194


在clent服务器执行以下命令

./consul agent  -data-dir /tmp/consul -node=n3 -bind=10.10.16.190  -dc=dc1 &

./consul join 10.10.16.194


上面几步就完成了初始化Server节点,以后通过-rejoin参数启动,可以重新加入集群。

./consul agent  -data-dir /tmp/consul -node=n3 -bind=10.10.16.190  -dc=dc1  -rejoin &


3、查看信息

./consul members

./consul info


4、查看节点

curl 127.0.0.1:8500/v1/catalog/nodes


5、使用DNS协议查看节点信息

dig @127.0.0.1 -p 8600 10.10.16.190


6、注册服务

curl -X PUT -d '{"Datacenter": "dc1", "Node": "mysql-1", "Address":"mysql-1.node.consul","Service": {"Service": "mysql", "tags": ["master","v1"], "Port": 3306}}' http://127.0.0.1:8500/v1/catalog/register

curl -X PUT -d '{"Datacenter": "dc1", "Node": "mysql-2", "Address":"mysql-2.node.consul","Service": {"Service": "mysql", "tags": ["slave","v1"],"Port": 3306}}' http://127.0.0.1:8500/v1/catalog/register


7、查看服务

curl http://127.0.0.1:8500/v1/catalog/service/mysql

dig @127.0.0.1 -p 8600 10.10.16.194 SRV


删除服务

curl -X PUT -d '{"Node": "mysql-1"}' http://127.0.0.1:8500/v1/catalog/deregister

curl -X PUT -d '{"Node": "mysql-2"}' http://127.0.0.1:8500/v1/catalog/deregister


8、 K/V存储

consul还提供了键/值存储的功能。

如 查询 所有K/V

curl -v http://localhost:8500/v1/kv/?recurse


保存键为web/key2, flags 为42, 值为true的记录。

curl -X PUT -d 'test' http://localhost:8500/v1/kv/web/key2?flags=42

true


删除记录:

curl -X DELETE http://localhost:8500/v1/kv/web/sub?recurse


更新值:

curl -X PUT -d 'newval' http://localhost:8500/v1/kv/web/key1?cas=97

true


更新index:

curl "http://localhost:8500/v1/kv/web/key2?index=101&wait=5s"


结果:[{"CreateIndex":98,"ModifyIndex":101,"Key":"web/key2","Flags":42,"Value":"dGVzdA=="}]



     本文转自aaron428 51CTO博客,原文链接:http://blog.51cto.com/aaronsa/1832861,如需转载请自行联系原作者


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
打赏
0
0
0
0
347
分享
相关文章
如何使用Prometheus监控Docker Swarm集群的资源使用情况?
还可以根据实际需求进行进一步的配置和优化,如设置告警规则,当资源使用超出阈值时及时发出警报。通过这些步骤,能够有效地使用 Prometheus 对 Docker Swarm 集群的资源进行监控和管理。
54 8
如何监控Docker Swarm集群的性能?
如何监控Docker Swarm集群的性能?
99 8
Docker Swarm
Docker Swarm 为容器化应用的部署和管理提供了一种高效、可靠的方式,使开发者能够更轻松地构建和运行分布式应用。随着容器技术的不断发展,Docker Swarm 在企业级应用中的应用也将越来越广泛。
53 8
Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项
本文深入探讨了Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项,旨在帮助用户高效管理集群资源,适应业务变化,确保服务稳定性和资源优化。
52 6
Docker Swarm 核心概念及详细使用
Docker Swarm 是 Docker 的原生集群管理工具,用于将多个 Docker 主机整合成一个虚拟主机,提供集群管理和调度功能。其核心特点包括集群管理、容错与高可用性、负载均衡、声明式服务模型、服务发现和安全性。本文档详细介绍了 Docker Swarm 的安装配置、服务部署、节点管理、网络配置及故障模拟等关键操作,适用于中小型项目或对 Kubernetes 复杂性有所顾虑的用户。
133 6
Docker Swarm、Docker Stack和Portainer的使用
Docker Swarm、Docker Stack 和 Portainer 各有其独特的功能和优势。Docker Swarm 适用于分布式服务的管理和编排,Docker Stack 便于多容器应用的定义和部署,而 Portainer 提供了直观的 UI,简化了 Docker 环境的管理。结合使用这些工具,可以大大提高容器化应用的部署和管理效率。希望本文对您理解和应用这些工具有所帮助。
132 5
|
3月前
|
docker swarm启动服务并连接到网络
【10月更文挑战第16天】
52 5

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等