Etcd在Linux CentOS7下载、安装
概述:
etcd完整的cluster(集群)至少有三台,这样才能选举出一个master (主节点)其他两个就是node(次节点)。
如果小于 3 台则无法进行选举,造成集群 不可用。
之前Etcd用的是4000和4001端口,后来由IANA分配了现在的2379和2380端口。
2379端口:提供HTTP API服务,和etcdctl交互;
2380端口:集群中节点间通讯;
一、下载etcd
1 | [root@Cent0S7 ~] # curl -O https://github.com/etcd-io/etcd/releases/download/v3.1.5/etcd-v3.1.5-linux-amd64.tar.gz |
PS:curl默认不支持Https,命令#curl -V(V大写)查看Protocols项有没有https ,如果没有就要用命令:# yum install openssl-devel 装SSL
二、 解压 etcd-v3.1.5-linux-amd64.tar.gz 压缩文件
1 2 | [root@Cent0S7 ~] # tar -zxf etcd-v3.1.5-linux-amd64.tar.gz [root@Cent0S7 ~] # cd etcd-v3.1.5-linux-amd64/ |
将文件夹中etcd和etcdctl两个文件添加可执行文件路径到环境变量PATH中。
三、etcd是服务端,etcdctl是运维人员操作的控制端,一般只需要装etcd,现在是学习就都装在同一台机器。
1 2 | [root@Cent0S7 etcd-v3.1.5-linux-amd64] # mv etcd /usr/local/bin [root@Cent0S7 etcd-v3.1.5-linux-amd64] # mv etcdctl /usr/local/bin |
PS:用echo $PATH查看自己的环境变量路径
四、修改环境变量PATH
1 | [root@Cent0S7 ~] # vi /etc/profile |
五、在文件最后加入变量,因为etcd默认使用V2版本,我们需要V3版本的API。
1 | export ETCDCTL_API=3 |
六、变量生效,其他用户生效也要执行下面命令。
1 | [root@Cent0S7 ~] # source /etc/profile |
七、查看版本信息
1 2 3 | [root@Cent0S7 ~] # etcdctl -v 或 etcdctl -version etcdctl version: 3.1.5 API version: 3.1 |
八、创建etcd配置文件,一定需要确认用户对数据目录etcd有读写权限,否则服务可能无法正确启动
1 2 3 4 5 6 7 | [root@Cent0S7 ~] # mkdir -p /var/lib/etcd/ [root@Cent0S7 ~] # cat <<EOF | sudo tee /etc/etcd.conf #节点名称 ETCD_NAME=$(hostname -s) #数据存放位置 ETCD_DATA_DIR=/var/lib/etcd/ EOF |
九、创建开机启动文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | [root@Cent0S7 ~] # cat <<EOF | sudo tee /etc/systemd/system/etcd.service [Unit] Description=Etcd Server Documentation=https: //github .com /coreos/etcd After=network.target [Service] User=root Type=notify #这个文件特别关键,etcd使用的环境变量都需要通过环境变量文件读取 EnvironmentFile=- /etc/etcd .conf ExecStart= /usr/local/bin/etcd Restart=on-failure RestartSec=10s LimitNOFILE=40000 [Install] WantedBy=multi-user.target EOF |
PS:EnvironmentFile=-/etc/etcd.conf 这个配置项里/etc前的-是K8S生成配置文件时就有的,不是我误写的。
十、重新加载配置 && 开机启动 && 启动etcd
1 | [root@Cent0S7 ~] # systemctl daemon-reload && systemctl enable etcd && systemctl start etcd |
开机启动设置状态,状态enabled
1 2 3 4 5 | [root@Cent0S7 ~] # systemctl list-unit-files etcd.service UNIT FILE STATE etcd.service enabled 1 unit files listed. |
查看etcd状态
1 2 3 4 5 6 7 8 9 10 11 | [root@Cent0S7 ~] # systemctl show etcd.service Type=notify Restart=on-failure NotifyAccess=main RestartUSec=10s TimeoutStartUSec=1min 30s TimeoutStopUSec=1min 30s WatchdogUSec=0 WatchdogTimestamp=Sun 2020-11-29 22:44:07 CST WatchdogTimestampMonotonic=9160693425 ------ 剩余内容 (略) ------- |
十一、查看2379端口是否启动成功
1 2 3 4 | [root@Cent0S7 ~] # netstat -an |grep 2379 tcp 0 0 127.0.0.1:2379 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:53156 127.0.0.1:2379 ESTABLISHED tcp 0 0 127.0.0.1:2379 127.0.0.1:53156 ESTABLISHED |
PS: CentOS默认没有装netstat,需要 # yum install -y net-tools 自己装
十二、测试
1 2 3 4 5 | [root@Cent0S7 ~] # etcdctl put mykey "this is etcd" OK [root@Cent0S7 ~] # etcdctl get mykey mykey this is etcd |
新建put后OK ,输出也能看到值 this is etcd 启动成功。
##################### 报错 #################################
错误:
1 2 | [tomcat@Cent0S7 ~]$ etcdctl put mykey "this is awesome" No help topic for 'put' |
解决方法:
export ETCDCTL_API=3
##################### 报错 ################################
参考文章:
http://cnblogs.com/wujuntian/p/12837926.html
http://blog.51cto.com/zlyang/1951164
http://blog.csdn.net/gaowenhui2008/article/details/95961967
http://cnblogs.com/davygeek/p/7154780.html
http://blog.csdn.net/skh2015java/article/details/94012643
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!