2017.08.03 11:03* 字數 1432 閱讀 184評論 0喜歡 7
一、先準備三個虛擬機器:
ip:
10.10.102.60
10.10.102.61
10.10.102.62
二、hostname修改:
永久修改hostname,hostname全部修改為ip
編輯hostname內容:#vim /etc/hostname
將內容刪掉,修改為ip
重啟伺服器:#reboot
檢視hostname是否修改:#hostname
三、建立etcd叢集
安裝etcd: #yum install etcd -y
圖片1.png
如果出現以下情況:
圖片2.png
可以嘗試此處提供的兩種解決方案:
a、先自己點選http://mirrors.cug.edu.cn/…..的那個連結,如果可以我們本地網路可以訪問得到,那麼證明是伺服器的網路問題,可以修改dns,方法如下:
- 命令列輸入 sudo vim /etc/resolv.conf
- 點選 i 進入編輯模式
- 修改檔案內容:
nameserver 202.101.172.46 #修改成你的主DNS,由於本人在杭州,所以這裡用的是杭州電信的dns
search localhost #你的域名 - 點選 esc 退出編輯模式
- 輸入 :wq 後回車鍵退出
之後執行下:
yum makecache
搞定後重新安裝一遍etcd,如果問題還是沒有解決則嘗試用b方案。
b、由提示的異常可以看出,是找不到etcd-2.3.7-2.el7.x86_64導致的,解決方案如下:
先在網上下載etcd-2.3.7-2.el7.x86_64.rpm
image.png
- 採用命令:scp /home/rice/桌面/etcd-2.3.7-2.el7.x86_64.rpm [email protected]:/tmp/etcd-2.3.7-2.el7.x86_64.rpm
(etcd-2.3.7-2.el7.x86_64.rpm的檔案地址根據實際情況修改)將檔案遠端上傳到虛擬機器上 - 採用命令:rpm -i etcd-2.3.7-2.el7.x86_64.rpm (進行安裝)
- 安裝後會出現
image.png
不過沒關係,重新安裝一次etcd即可。
安裝成功後配置etcd叢集
修改etcd配置檔案,我這裡的環境是在/etc/etcd/etcd.conf,請根據實際情況修改。
etcd0配置示例:
#[member]
# 節點名稱
ETCD_NAME=etcd0
# # 資料存放位置
ETCD_DATA_DIR="/var/lib/etcd/etcd0"
# # 監聽其他 Etcd 例項的地址
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
# # 監聽客戶端地址
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
# # 通知其他 Etcd 例項地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.10.102.60:2380"
# # 初始化叢集內節點地址
ETCD_INITIAL_CLUSTER="etcd0=http://10.10.102.60:2380,etcd1=http://10.10.102.61:2380,etcd2=http://10.10.102.62:2380"
# # 初始化叢集狀態,new 表示新建
ETCD_INITIAL_CLUSTER_STATE="new"
# # 初始化叢集 token
ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
# # 通知 客戶端地址
ETCD_ADVERTISE_CLIENT_URLS="http://10.10.102.60:2379,http://10.10.102.60:4001"
etcd1配置示例:
#[member]
# 節點名稱
ETCD_NAME=etcd1
# # 資料存放位置
ETCD_DATA_DIR="/var/lib/etcd/etcd1"
# # 監聽其他 Etcd 例項的地址
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
# # 監聽客戶端地址
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
# # 通知其他 Etcd 例項地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.10.102.61:2380"
# # 初始化叢集內節點地址
ETCD_INITIAL_CLUSTER="etcd0=http://10.10.102.60:2380,etcd1=http://10.10.102.61:2380,etcd2=http://10.10.102.62:2380"
# # 初始化叢集狀態,new 表示新建
ETCD_INITIAL_CLUSTER_STATE="new"
# # 初始化叢集 token
ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
# # 通知 客戶端地址
ETCD_ADVERTISE_CLIENT_URLS="http://10.10.102.61:2379,http://10.10.102.61:4001"
etcd2配置示例:
#[member]
# 節點名稱
ETCD_NAME=etcd2
# # 資料存放位置
ETCD_DATA_DIR="/var/lib/etcd/etcd2"
# # 監聽其他 Etcd 例項的地址
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
# # 監聽客戶端地址
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
# # 通知其他 Etcd 例項地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.10.102.62:2380"
# # 初始化叢集內節點地址
ETCD_INITIAL_CLUSTER="etcd0=http://10.10.102.60:2380,etcd1=http://10.10.102.61:2380,etcd2=http://10.10.102.62:2380"
# # 初始化叢集狀態,new 表示新建
ETCD_INITIAL_CLUSTER_STATE="new"
# # 初始化叢集 token
ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
# # 通知 客戶端地址
ETCD_ADVERTISE_CLIENT_URLS="http://10.10.102.62:2379,http://10.10.102.62:4001"
針對以上配置引數做些解釋:
ETCD_NAME :ETCD的節點名,在叢集中應該保持唯一,可以使用 hostname。
ETCD_DATA_DIR:ETCD的資料儲存目錄,服務執行資料儲存的路徑,預設為 ${name}.etcd。
ETCD_SNAPSHOT_COUNTER:多少次的事務提交將觸發一次快照,指定有多少事務(transaction)被提交時,觸發擷取快照儲存到磁碟。
ETCD_HEARTBEAT_INTERVAL:ETCD節點之間心跳傳輸的間隔,單位毫秒,leader 多久傳送一次心跳到 followers。預設值是 100ms。
ETCD_ELECTION_TIMEOUT:該節點參與選舉的最大超時時間,單位毫秒,重新投票的超時時間,如果 follow 在該時間間隔沒有收到心跳包,會觸發重新投票,預設為 1000 ms。
ETCD_LISTEN_PEER_URLS:該節點與其他節點通訊時所監聽的地址列表,多個地址使用逗號隔開,其格式可以劃分為scheme://IP:PORT,這裡的scheme可以是http、https。和同伴通訊的地址,比如 http://ip:2380 ,如果有多個,使用逗號分隔。需要所有節點都能夠訪問,所以不要使用 localhost。
ETCD_LISTEN_CLIENT_URLS:該節點與客戶端通訊時監聽的地址列表,對外提供服務的地址:比如 http://ip:2379 ,http://127.0.0.1:2379 ,客戶端會連線到這裡和 etcd 互動
ETCD_INITIAL_ADVERTISE_PEER_URLS:該成員節點在整個叢集中的通訊地址列表,這個地址用來傳輸叢集資料的地址。因此這個地址必須是可以連線叢集中所有的成員的。該節點同伴監聽地址,這個值會告訴叢集中其他節點。
ETCD_INITIAL_CLUSTER:配置叢集內部所有成員地址,其格式為:ETCD_NAME=ETCD_INITIAL_ADVERTISE_PEER_URLS,如果有多個使用逗號隔開,叢集中所有節點的資訊,格式為 node1=http://ip1:2380 ,node2=http://ip2:2380 ,…。注意:這裡的 node1 是節點的 –name 指定的名字;後面的 ip1:2380 是 –initial-advertise-peer-urls 指定的值
ETCD_ADVERTISE_CLIENT_URLS:廣播給叢集中其他成員自己的客戶端地址列表
ETCD_INITIAL_CLUSTER_STATE:新建叢集的時候,這個值為new;假如已經存在的叢集,這個值為 existing。
ETCD_INITIAL_CLUSTER_TOKEN:初始化叢集token,建立叢集的token,這個值每個叢集保持唯一。這樣的話,如果你要重新建立叢集,即使配置和之前一樣,也會再次生成新的叢集和節點 uuid;否則會導致多個叢集之間的衝突,造成未知的錯誤。
注意:所有ETCD_MY_FLAG的配置引數也可以通過命令列引數進行設定,但是命令列指定的引數優先順序更高,同時存在時會覆蓋環境變數對應的值。
測試etcd叢集
按上面配置好各叢集節點後,分別在各節點啟動etcd。
[[email protected] ~]# $ systemctl start etcd
檢視所有叢集節點資訊。
[[email protected] ~]# etcdctl member list
Error: client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused
; error #1: dial tcp 127.0.0.1:2379: getsockopt: connection refused
error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused
error #1: dial tcp 127.0.0.1:2379: getsockopt: connection refused
如果出現以上錯誤資訊,可以通過該方法解決:
在etcd配置檔案中的ETCD_LISTEN_CLIENT_URLS項,加入http://127.0.0.1:2379 ,http://127.0.0.1:4001 。如:
ETCD_LISTEN_CLIENT_URLS="http://10.10.102.61:2379,http://10.10.102.61:4001,http://127.0.0.1:2379,http://127.0.0.1:4001"
再次查詢:
[[email protected] ~]# etcdctl member list
ce2a822cea30bfca: name=etcd2 peerURLs=http://localhost:2380,http://localhost:7001 clientURLs=http://10.10.102.61:2379,http://10.10.102.61:4001 isLeader=true
如果查詢出現:
圖片.png
由提示可知:是叢集節點的版本太低導致的,
在etcd0上:
[[email protected] ~]# etcd --version
etcd Version: 3.1.9
Git SHA: 0f4a535
Go Version: go1.7.4
Go OS/Arch: linux/amd64
在etcd1和etcd2上:
[[email protected] ~]# etcd --version
etcd Version: 2.3.7
Git SHA: fd17c91
Go Version: go1.6.3
Go OS/Arch: linux/amd64
解決方法是解除安裝了某個叢集節點的etcd,然後安裝同樣版本號的etcd即可,在這裡我將低版本的解除安裝掉,重新安裝高版本的。
解除安裝方法:
[[email protected] ~]# yum remove etcd
重新安裝好後,再重新像上面那樣配置 etcd.conf,後啟動etcd,檢視叢集狀態:
[[email protected] tmp]# etcdctl member list
81816861758ee8a9: name=etcd2 peerURLs=http://10.10.102.62:2380 clientURLs=http://10.10.102.62:2379,http://10.10.102.62:4001 isLeader=false
9551f10c6eb4d835: name=etcd0 peerURLs=http://10.10.102.60:2380 clientURLs=http://10.10.102.60:2379,http://10.10.102.60:4001 isLeader=false
e2f8b90ab44a9152: name=etcd1 peerURLs=http://10.10.102.61:2380 clientURLs=http://10.10.102.61:2379,http://10.10.102.61:4001 isLeader=true
證明叢集部署成功。
喜歡就點贊,支援就打賞
写评论
很抱歉,必須登入網站才能發佈留言。