etcd集群安装

2023-04-28 09:12:14 浏览数 (1)

etcd是一个分布式键值存储系统,用于在分布式系统中存储共享配置和服务发现信息。它是Kubernetes的核心组件之一,因此对于搭建Kubernetes集群而言,etcd的安装是非常重要的一步。

一、安装前的准备

在开始etcd的安装之前,需要做以下准备工作:

  1. 确定etcd集群的大小和节点数量:etcd集群的大小指的是集群中etcd节点的数量,一般建议至少部署3个节点。如果集群规模较大,可以考虑增加节点数量,以提高可用性和性能。
  2. 确定etcd节点的IP地址和主机名:每个etcd节点都需要有一个唯一的IP地址和主机名。这些信息将用于配置etcd集群。
  3. 确定etcd集群的通信端口:etcd集群使用的默认端口是2379和2380,如果需要使用其他端口,需要在配置文件中进行配置。
  4. 安装etcd二进制文件:etcd可以从官方网站(https://github.com/etcd-io/etcd/releases)下载预编译的二进制文件,也可以通过源代码进行编译。本文将使用预编译的二进制文件进行安装。

二、安装etcd集群

下载etcd二进制文件

从官方网站(https://github.com/etcd-io/etcd/releases)下载适合自己操作系统的etcd二进制文件。本文以Linux为例,下载文件名为etcd-v3.5.0-linux-amd64.tar.gz的压缩包。

解压缩etcd二进制文件

将下载的压缩包解压缩到指定的目录,例如:

代码语言:javascript复制
tar xzvf etcd-v3.5.0-linux-amd64.tar.gz -C /usr/local/bin --strip-components=1

这将把etcd和etcdctl二进制文件解压缩到/usr/local/bin目录,并将所有文件的权限设置为755。

创建etcd配置文件

创建etcd配置文件,以etcd-01为例::

代码语言:javascript复制
# cat > /etc/etcd/etcd.conf <<EOF
#[Member]
ETCD_NAME="etcd-01"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://172.16.0.10:2380"
ETCD_LISTEN_CLIENT_URLS="https://172.16.0.10:2379"

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://172.16.0.10:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://172.16.0.10:2379"
ETCD_INITIAL_CLUSTER="etcd-01=https://172.16.0.10:2380,etcd-02=https://172.16.0.11:2380,etcd-03=https://172.16.0.12:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF

这里定义了一个名为etcd-01的etcd节点,数据目录为/var/lib/etcd/default.etcd,通信端口分别为2379和2380。在Clustering部分中,定义了etcd集群中所有节点的IP地址和通信端口,并指定了集群的初始化参数,如集群名称、集群令牌、集群状态等。需要根据实际情况进行修改。

启动etcd服务

使用systemd启动etcd服务,以etcd-01为例:

代码语言:javascript复制
# cat > /etc/systemd/system/etcd.service <<EOF
[Unit]
Description=etcd
Documentation=https://github.com/coreos/etcd
After=network.target

[Service]
User=etcd
Type=notify
ExecStart=/usr/local/bin/etcd --config-file /etc/etcd/etcd.conf
Restart=always
RestartSec=10s
LimitNOFILE=40000

[Install]
WantedBy=multi-user.target
EOF

# systemctl daemon-reload
# systemctl start etcd
# systemctl enable etcd

这里定义了一个名为etcd.service的systemd服务单元,指定了etcd服务的启动命令和配置文件,以及服务的重启和资源限制等参数。需要根据实际情况进行修改。

检查etcd服务状态

检查etcd服务是否正常运行:

代码语言:javascript复制
# systemctl status etcd

如果etcd服务正常运行,应该输出类似以下的信息::

代码语言:javascript复制
● etcd.service - etcd
   Loaded: loaded (/etc/systemd/system/etcd.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2022-04-28 09:00:00 CST; 1 day 2h ago
 Main PID: 1234 (etcd)
    Tasks: 7
   Memory: 8.6M
   CGroup: /system.slice/etcd.service
           └─1234 /usr/local/bin/etcd --config-file /etc/etcd/etcd.conf

Apr 28 09:00:00 etcd-01 systemd[1]: Started etcd.
Apr 28 09:00:01 etcd-01 etcd[1234]: etcd Version: 3.5.0-alpha.5
Apr 28 09:00:01 etcd-01 etcd[1234]: Git SHA: 47fa455
Apr 28 09:00:01 etcd-01 etcd[1234]: Go Version: go1.17.2
Apr 28 09:00:01 etcd-01 etcd[1234]: Go OS/Arch: linux/amd64
Apr 28 09:00:01 etcd-01 etcd[1234]: listener: setting advertise client URLs to https://172.16.0.10:2379
Apr 28 09:00:01 etcd-01 etcd[1234]: listener: setting advertise peer URLs to https://172.16.0.10:2380
Apr 28 09:00:01 etcd-01 etcd[1234]: embed: serving peer URLs https://172.16.0.10:2380
Apr 28 09:00:01 etcd-01 etcd[1234]: embed: serving client URLs https://172.16.0.10:2379

其中,Active行显示服务状态为active (running),表示服务正在运行;Main PID行显示etcd进程的PID;CGroup行显示etcd服务所属的CGroup;日志中还会输出etcd的版本信息、运行时参数和监听地址等信息。

0 人点赞