天天看點

zookeeper+mesos+docker+swarm

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

dataDir=/data/zookeeper/zk2/data

dataLogDir=/data/zookeeper/zk2/logs

clientPort=2182

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

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

dataDir=/data/zookeeper/zk3/data

dataLogDir=/data/zookeeper/zk3/logs

clientPort=2183

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部署

echo 10.10.16.193 > /etc/mesos-slave/hostname

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

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 &

上面幾步就完成了初始化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-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

更新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,如需轉載請自行聯系原作者