日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P8实战(二):分布式锁前置技能 etcd 集群搭建

發布時間:2024/2/28 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P8实战(二):分布式锁前置技能 etcd 集群搭建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

etcd 集群環境搭建

13 什么是 etcd?

etcd 是一個分布式高可用的 Key/Value 存儲系統,旨在可靠、快速地保存和提供對關鍵數據的訪問,主要用于分享配置和服務發現。它通過分布式鎖定、領導人選舉和編寫障礙實現可靠的分布式協調。etcd集群用于高可用性和永久數據存儲和檢索。(為后續分布式 id 的生成做準備)

etcd 和 Zookeeper 的區別?

zookeeper 是用 java 開發的,被 Apache 很多項目采用。etcd 是用 go 開發的,主要是被 Kubernetes 采用。zookeeper 非常穩定,是一個著名的分布式協調系統,etcd 是后起之秀,前景廣闊。因為 etcd 是用 go 寫的,現在還沒有很好的 java 客戶端庫,需要通過 http 方式調用。而 zookeeper 在這方面就成熟很多,對于 java 之外的其他開發語言都有很好的客戶端庫。

具體選擇 zookeeper 還是 etcd,需要根據您的需求結合它們各自的特性進行判斷,還有您所使用的開發語言。

etcd 停止開發了嗎?

2019 年回答:etcd 沒有停止開發,Google、Red Hat、阿里巴巴都有投人進去。但是 CoreOS 被 RedHat 收購后,原 etcd 核心開發人員都離開了。新來的當然沒有老革命這么有熱情,搞個大事情啥的。而且目前功能也比較穩定,趨于偏維護狀態。

13.1 Rancher Master節點(etcd開源數據庫)

主機規劃

序號主機名稱角色數量主機內網IP規劃主機外網IP主機配置基礎軟件系統
01p8-etcd-node01-masterNode01110.0.0.140123.57.59.1372C 4Gwget &&yum install -y etcdCentOS7x64 1810
02p8-etcd-node02-slave01Node02110.0.0.141123.57.59.1382C 4Gwget &&yum install -y etcdCentOS7x64 1810
03p8-etcd-node02-slave02Node03110.0.0.142123.57.59.1392C 4Gwget &&yum install -y etcdCentOS7x64 1810

IP 地址一般設置為連續的,在寫自動化腳本的時候,寫個循環就過去了,比較方便。

PS:這里要注意 etcd 并不是很吃硬件,如果業務量不是很大的話給2C 4G就夠了,如果業務量比較大的話4G 8G-16G或更大的硬件配置,自己靈活掌握。安裝的時候需要注意7.2版本坑比較多,跟etcd的版本存在兼容性的問題,自己安裝的過程中容易翻車。

CentOS7x64 1810版本下載鏈接 鏈接:https://pan.baidu.com/s/14PWga1We99tkZLJyS_q0gQ 提取碼:glk4

XShell XFtp Typora軟件下載鏈接 鏈接:https://pan.baidu.com/s/1NZWfWqKezXewsHpV0gc2-A 提取碼:48xc

etcd 官方給出的硬件配置 https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/hardware.md

13.2 設置主機 hostname

hostnamectl set-hostname p8-etcd-node01-master hostnamectl set-hostname p8-etcd-node02-slave01 hostnamectl set-hostname p8-etcd-node02-slave02
為什么要設置 hostname?

多年老運維要有好的運維習慣,就像編碼規范那樣。它的作用是,如果沒有 DNS 的情況下,我們可以用 host 文件做 host 解析,相當于是 DNS。當然,如果有條件的話,你也可以做內網 DNS,也是一種解決方案。

13.3 修改 IP 地址(有必要的話,就設置 hosts 解析)

虛擬機是虛擬網卡,叫 ens33,物理網卡叫 eth0,eth1…,如果是 Dell 的服務器,也有可能是 em1,em2…

cd /etc/sysconfig/network-scripts && vim ifcfg-ens33

13.4 安裝 etcd 搭建集群環境

etcd集群三種方式:靜態集群,動態集群,DNS集群;我們這里搭建的是靜態集群。

三臺機器上都需要安裝
yum install -y etcd
效驗安裝
rpm -qa etcd
查看安裝的 etcd 的版本號
etcdctl -v

etcdctl --version

13.5 修改配置文件搭建集群環境

修改之前先備份!
cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak cd /etc/etcd && vim etcd.conf

配置文件修改如下,需要修改的地方均已用注釋 “# 【這里】…” 標出,(坑:最后記得把中文注釋刪掉,否則會報錯)

#[Member] #ETCD_CORS="" ETCD_DATA_DIR="/var/lib/etcd/default.etcd" #ETCD_WAL_DIR="" ETCD_LISTEN_PEER_URLS="http://10.0.0.140:2380" # 【這里】打開這行注釋,并且將localhost修改為本機的ip地址 ETCD_LISTEN_CLIENT_URLS="http://10.0.0.140:2379,http://127.0.0.1:2379" # 【這里】修改ip地址,注意要添加一個127.0.0.1:2379的環回地址 CD_MAX_SNAPSHOTS="5" #ETCD_MAX_WALS="5" ETCD_NAME="Master" # 【這里】將default修改為Master,Node02,Node03 #ETCD_SNAPSHOT_COUNT="100000" #ETCD_HEARTBEAT_INTERVAL="100" #ETCD_ELECTION_TIMEOUT="1000" #ETCD_QUOTA_BACKEND_BYTES="0" #ETCD_MAX_REQUEST_BYTES="1572864" #ETCD_GRPC_KEEPALIVE_MIN_TIME="5s" #ETCD_GRPC_KEEPALIVE_INTERVAL="2h0m0s" #ETCD_GRPC_KEEPALIVE_TIMEOUT="20s" # #[Clustering] ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.140:2380" # 【這里】修改本機ip ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.140:2379" # 【這里】修改本機ip #ETCD_DISCOVERY="" #ETCD_DISCOVERY_FALLBACK="proxy" #ETCD_DISCOVERY_PROXY="" #ETCD_DISCOVERY_SRV="" ETCD_INITIAL_CLUSTER="Master=http://10.0.0.140:2380,Node02=http://10.0.0.141:2380,Node03=http://10.0.0.142:2380" # 【這里】必須和上面配置的ETCD_NAME名稱相同。在三臺機器上,主節點始終放在第一個 ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" # 【這里】打開 ETCD_INITIAL_CLUSTER_STATE="new" # 【這里】打開 #ETCD_STRICT_RECONFIG_CHECK="true" #ETCD_ENABLE_V2="true" ...省略

保存退出即可

運行 etcd 集群

注:三臺機器都運行以下命令之后,才能成功跑起來。只運行其中一臺時,會阻塞等待連接。

systemctl restart etcd systemctl status etcdetcdctl member list

運行起來,這樣,集群就搭建成功了

測試一下

etcdctl set name yanliang # Master節點 etcdctl get name yanliang # Slave節點

13.6 配置防火墻開放端口C7–firewalld

firewall-cmd --zone=public --add-port=2379/tcp --permanent firewall-cmd --zone=public --add-port=2380/tcp --permanent firewall-cmd --reload && firewall-cmd --list-ports

13.7 查看集群列表/健康狀態

查看集群列表

etcdctl member list

查看集群健康狀態

etcdctl cluster-health

13.8 容易出現的問題

定時任務 / 計劃任務 / 定時同步時間
yum install -y ntp crontab -e 0 1 * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn >> /var/log/ntpdate.log 2>&1 &

各個節點配置 crontab 定時同步時間,否則可能會出現以下

node1 etcd[1657]: the clock difference against peer f63afbe816fb463d is too high [8h0m2.595609129s > 1s]

這個問題, 將時間進行同步即可。

總結

以上是生活随笔為你收集整理的P8实战(二):分布式锁前置技能 etcd 集群搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。