etcd 多台服务器集群
生活随笔
收集整理的這篇文章主要介紹了
etcd 多台服务器集群
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
etcd 多臺服務器集群
下載安裝 etcd
$ mkdir -p $GOPATH/src/github.com/coreos $ cd !$ $ git clone https://github.com/coreos/etcd.git $ cd etcd $ ./build啟動服務
每個節點都要執行以下配置,HOST_1、HOST_2、HOST_3 分別設置為多臺服務器的IP
TOKEN=token-01 CLUSTER_STATE=new NAME_1=machine-1 NAME_2=machine-2 NAME_3=machine-3 HOST_1=192.168.1.126 HOST_2=192.168.1.119 HOST_3=192.168.1.103 CLUSTER=${NAME_1}=http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380machine 1 執行如下命令
$ cd $GOPATH/src/github.com/coreos/etcd/bin# For machine 1 THIS_NAME=${NAME_1} THIS_IP=${HOST_1} ./etcd --data-dir=data.etcd --name ${THIS_NAME} --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 --initial-cluster ${CLUSTER} --initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}machine 2 執行如下命令
$ cd $GOPATH/src/github.com/coreos/etcd/bin# For machine 2 THIS_NAME=${NAME_2} THIS_IP=${HOST_2} ./etcd --data-dir=data.etcd --name ${THIS_NAME} --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 --initial-cluster ${CLUSTER} --initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}machine 3 執行如下命令
$ cd $GOPATH/src/github.com/coreos/etcd/bin# For machine 3 THIS_NAME=${NAME_3} THIS_IP=${HOST_3} ./etcd --data-dir=data.etcd --name ${THIS_NAME} --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 --initial-cluster ${CLUSTER} --initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}檢測服務器運行是否正常
$ cd $GOPATH/src/github.com/coreos/etcd/binexport ETCDCTL_API=3 HOST_1=192.168.1.126 HOST_2=192.168.1.119 HOST_3=192.168.1.103 ENDPOINTS=$HOST_1:2379,$HOST_2:2379,$HOST_3:2379./etcdctl --endpoints=$ENDPOINTS member list存儲數據
./etcdctl --endpoints=$ENDPOINTS put foo "Hello World!"./etcdctl --endpoints=$ENDPOINTS get foo ./etcdctl --endpoints=$ENDPOINTS --write-out="json" get foo根據前綴查詢
./etcdctl --endpoints=$ENDPOINTS put web1 value1 ./etcdctl --endpoints=$ENDPOINTS put web2 value2 ./etcdctl --endpoints=$ENDPOINTS put web3 value3./etcdctl --endpoints=$ENDPOINTS get web --prefixweb1 value1 web2 value2 web3 value3刪除
./etcdctl --endpoints=$ENDPOINTS put key myvalue ./etcdctl --endpoints=$ENDPOINTS del key./etcdctl --endpoints=$ENDPOINTS put k1 value1 ./etcdctl --endpoints=$ENDPOINTS put k2 value2 ./etcdctl --endpoints=$ENDPOINTS del k --prefix事務寫入
$ ./etcdctl --endpoints=$ENDPOINTS put user1 bad OK$ ./etcdctl --endpoints=$ENDPOINTS txn --interactivecompares: // 輸入以下內容,輸入結束按 兩次回車 value("user1") = "bad" //如果 user1 = bad,則執行 get user1 success requests (get, put, del): get user1 //如果 user1 != bad,則執行 put user1 good failure requests (get, put, del): put user1 good // 運行結果,執行 success SUCCESSuser1 bad$ ./etcdctl --endpoints=$ENDPOINTS txn --interactive compares: value("user1") = "111" // 如果 user1 = 111,則執行 get user1 success requests (get, put, del): get user1 //如果 user1 != 111,則執行 put user1 2222 failure requests (get, put, del): put user1 2222 // 運行結果,執行 failure FAILUREOK$ ./etcdctl --endpoints=$ENDPOINTS get user1 user1 2222watch
// 當 stock1 的數值改變( put 方法)的時候,watch 會收到通知 ./etcdctl --endpoints=$ENDPOINTS watch stock1// 新打開終端 $ cd $GOPATH/src/github.com/coreos/etcd/binexport ETCDCTL_API=3 HOST_1=192.168.1.126 HOST_2=192.168.1.119 HOST_3=192.168.1.103 ENDPOINTS=$HOST_1:2379,$HOST_2:2379,$HOST_3:2379 ./etcdctl --endpoints=$ENDPOINTS put stock1 1000./etcdctl --endpoints=$ENDPOINTS watch stock --prefix./etcdctl --endpoints=$ENDPOINTS put stock1 10 ./etcdctl --endpoints=$ENDPOINTS put stock2 20更多操作
https://coreos.com/etcd/docs/latest/demo.html
總結
以上是生活随笔為你收集整理的etcd 多台服务器集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go-ethereum环境搭建及目录结构
- 下一篇: Golang和Ethereum中的big