最简单的时间同步方式,在各个宿主机上执行sudo ntpdate cn.pool.ntp.org 这通常是临时方案.终极方案是搭建时间同步的ntp服务.
aixin@DC-server1$ curl -L https://github.com/coreos/etcd/releases/download/v2.2.1/etcd-v2.2.1-linux-amd64.tar.gz -o etcd-v2.2.1-linux-amd64.tar.gz
aixin@DC-server1$ tar xzvf etcd-v2.2.1-linux-amd64.tar.gz
aixin@DC-server1$ sudo mv etcd etcdctl /bin
将以上的命令在三台机器上都执行一遍,或者使用scp将以上文件分发到另外两个主机
文件解压之后有如下几个文件:
Documentation etcd etcdctl
aixin@DC-server1$ etcd -name node1 \
-initial-advertise-peer-urls http://192.168.1.158:2380 \
-listen-peer-urls http://192.168.1.158:2380 \
-listen-client-urls http://192.168.1.158:2379,http://127.0.0.1:2379 \
-advertise-client-urls http://192.168.1.158:2379 \
-initial-cluster-token etcd-cluster \
-initial-cluster node1=http://${CLUSTER_IPS[0]}:2380,node2=http://${CLUSTER_IPS[1]}:2380,node3=http://${CLUSTER_IPS[2]}:2380 \
-initial-cluster-state new \
-data-dir $ETCD_DATADIR &
aixin@DC-server2$ etcd -name node2 \
-initial-advertise-peer-urls http://192.168.1.60:2380 \
-listen-peer-urls http://192.168.1.60:2380 \
-listen-client-urls http://192.168.1.60:2379,http://127.0.0.1:2379 \
-advertise-client-urls http://192.168.1.60:2379 \
-initial-cluster-token etcd-cluster \
-initial-cluster node1=http://${CLUSTER_IPS[0]}:2380,node2=http://${CLUSTER_IPS[1]}:2380,node3=http://${CLUSTER_IPS[2]}:2380 \
-initial-cluster-state new \
-data-dir $ETCD_DATADIR &
aixin@DC-server3$ etcd -name node3 \
-initial-advertise-peer-urls http://192.168.1.24:2380 \
-listen-peer-urls http://192.168.1.24:2380 \
-listen-client-urls http://192.168.1.24:2379,http://127.0.0.1:2379 \
-advertise-client-urls http://192.168.1.24:2379 \
-initial-cluster-token etcd-cluster \
-initial-cluster node1=http://${CLUSTER_IPS[0]}:2380,node2=http://${CLUSTER_IPS[1]}:2380,node3=http://${CLUSTER_IPS[2]}:2380 \
-initial-cluster-state new \
-data-dir $ETCD_DATADIR &
在三台机器上分别启动etcd服务.CLUSTER_IPS=(192.168.1.158 192.168.1.60 192.168.1.24)
这是一个ip数组.
aixin@DC-server2$ etcdctl cluster-health
member 5a2567911e869c1 is healthy: got healthy result from http://192.168.1.158:2379
member 5a125ed3c29f1acb is healthy: got healthy result from http://192.168.1.24:2379
member 70622961dfd72d05 is healthy: got healthy result from http://192.168.1.60:2379
cluster is healthy
sudo vi /etc/default/docker
DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store etcd://<三个IP任选其一>:2379 --cluster-advertise eth0:2375"
sudo service docker restart
--cluster-store= 参数指向docker daemon所使用key value service的地址(本例中即etcd的服务地址) --cluster-advertise= 参数决定了所使用网卡以及docker daemon端口信息
上面的-H 的参数分别指定了docker demon服务的地址和协议
#!/bin/bash
source ~/workspace/conf/project.cfg
source ./etcd.conf
if [ $# != 1 ] ; then
echo "USAGE: $0 <SUDO_PASSWD>"
echo " e.g.: $0 aixin"
exit 1;
fi
SUDO_PASSWD=$1
NODE_IP=$(hostname --all-ip-addresses | awk '{print $1}')
ETCD_NODENAME=""
for ((i=1; i<=${#CLUSTER_IPS[*]}; i++))
do
if [ $1 == ${CLUSTER_IPS[i-1]} ];then
ETCD_NODENAME="node"${i}
fi
done
if [ -z $ETCD_NODENAME ];then
echo "you must enter an ip in CLUSTER_IPS list. conf file is etcd.conf"
exit 0;
fi
ETCD_DATADIR=${DATA_DIR}/etcd/${ETCD_NODENAME}
if [ ! -d $ETCD_DATADIR ];then
echo ${SUDO_PASSWD}|sudo -S mkdir -p $ETCD_DATADIR
fi
echo ${SUDO_PASSWD}|sudo -S ./etcd/etcd -name ${ETCD_NODENAME} \
-initial-advertise-peer-urls http://${NODE_IP}:2380 \
-listen-peer-urls http://${NODE_IP}:2380 \
-listen-client-urls http://${NODE_IP}:2379,http://127.0.0.1:2379 \
-advertise-client-urls http://${NODE_IP}:2379 \
-initial-cluster-token etcd-cluster \
-initial-cluster node1=http://${CLUSTER_IPS[0]}:2380,node2=http://${CLUSTER_IPS[1]}:2380,node3=http://${CLUSTER_IPS[2]}:2380 \
-initial-cluster-state new \
-data-dir $ETCD_DATADIR &
http://my.oschina.net/funwun/blog/689861
http://chunqi.li/2015/11/09/docker-multi-host-networking/