如何在一台服务器上安装etcd集群

一、环境

角色 IP
etcd-1 192.168.10.10 (12379、12380)
etcd-2 192.168.10.10 (22379、22380)
etcd-3 192.168.10.10 (32379、32380)

多服务器把ip和端口自行调整一下就行了

二、软件下载

mkdir /opt/etcd
mkdir /opt/etcd/{cfg,ssl,data,wal} –p

mkdir /opt/etcd2
mkdir /opt/etcd2/{cfg,ssl,data,wal} –p

mkdir /opt/etcd3
mkdir /opt/etcd3/{cfg,ssl,data,wal} –p

工具下载:

curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssl_1.5.0_linux_amd64 -o cfssl
chmod +x cfssl
curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssljson_1.5.0_linux_amd64 -o cfssljson
chmod +x cfssljson
curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssl-certinfo_1.5.0_linux_amd64 -o cfssl-certinfo
chmod +x cfssl-certinfo
mv {cfssl,cfssljson,cfssl-certinfo} /usr/local/bin

etcd软件下载:

wget -c https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz
tar -zxf etcd-v3.5.0-linux-amd64.tar.gz

cd etcd-v3.5.0-linux-amd64
mv {etcd,etcdctl,etcdutl} /usr/local/bin/

三、证书生成

(1)自签证书颁发机构(CA)

[root@localhost etcd]# cat > ca-config.json<< EOF 
{
    "signing":{
        "default":{
            "expiry":"87600h"
        },
        "profiles":{
            "kubernetes":{
                "expiry":"87600h",
                "usages":[
                    "signing",
                    "key encipherment",
                    "server auth",
                    "client auth"
                ]
            }
        }
    }
}
EOF
[root@localhost etcd]# cat > ca-csr.json<< EOF 
{
    "CN":"etcd CA",
    "key":{
        "algo":"rsa",
        "size":2048
    },
    "names":[
        {
            "C":"CN",
            "L":"Beijing",
            "ST":"Beijing"
        }
    ]
}
EOF

生成 CA 秘钥文件(ca-key.pem)和证书文件(ca.pem) :

[root@localhost etcd]# cfssl gencert -ini
<think>嗯,用户问的是如何手动安装etcd并完成三集群的部署。首先,我需要回忆一下etcd的基本知识。etcd是一个高可用的分布式键值存储系统,常用于Kubernetes等系统中存储关键数据。用户可能需要搭建一个etcd集群来支持他们的分布式系统,比如自己的Kubernetes集群或者其他需要一致性的服务。 接下来,用户提到的是手动安装,所以应该避免使用自动化工具,而是通过直接下载二进制文件或者编译源码的方式来安装。然后是三机器的集群部署,需要考虑集群的配置、节点之间的通信以及安全设置,比如TLS证书。 首先,我应该确定安装etcd的步骤。通常,etcd可以从GitHub的release页面下载二进制文件,解压后配置环境变量或者移动到系统路径中。然后,每机器上都需要进行这样的安装步骤。 接下来是集群配置。用户需要知道每个节点的名称、IP地址,以及初始的集群配置参数。etcd集群需要每个节点知道其他节点的信息,所以在启动参数中需要指定initial-cluster参数,列出所有节点的名称和地址。 然后,安全方面的问题。虽然用户可能只是测试环境,但生产环境中通常需要TLS加密。不过,用户的问题中没有明确说明是否需要TLS,可能需要给出两种方案,或者建议用户至少了解这部分内容。但考虑到手动安装可能更偏向于测试或学习,可能暂时不需要TLS,但最好还是提一下。 另外,etcd的版本问题。不同版本的etcd可能在配置参数上有所不同,比如v2和v3的API变化较大。需要确保用户下载的是较新的稳定版本,比如v3.5.x,并注意对应的配置参数是否正确。 接下来,考虑集群启动后的验证步骤。用户需要知道如何检查集群的健康状态,比如使用etcdctl命令,列出成员,查看节点状态等。此外,可能需要测试数据的读写,确保集群正常工作。 可能遇到的常见问题包括:节点之间网络不通,导致集群无法形成;配置文件中的IP地址或端口错误;防火墙设置阻止了节点间的通信;启动参数不正确,比如拼写错误或者缺少必要的参数。 还需要考虑每个节点的服务管理,比如使用systemd来管理etcd服务,这样可以在系统启动时自动运行,并且方便日志查看和进程管理。这可能需要编写systemd的unit文件,并配置对应的环境变量或启动参数。 另外,用户可能需要了解如何扩展集群或者处理节点故障,但当前问题主要是部署三节点的集群,所以这些可能暂时不需要深入,但可以简要提及后续维护的注意事项。 最后,总结步骤:下载安装etcd,配置每节点的环境,编写启动参数或systemd服务文件,启动服务,验证集群状态,测试功能。 需要注意的是,用户是否有权限操作这三机器,是否已经配置了SSH互信或者需要手动在每机器上操作。此外,可能需要在配置文件中使用正确的advertise-client-urls和listen-peer-urls,确保节点间通信正确。 现在,把这些思考整理成一个步骤清晰的指南,包括准备工作、安装步骤、配置集群、启动服务、验证和测试,以及常见问题处理。同时,给出示例配置和命令,方便用户复制粘贴操作。还要提醒用户替换示例中的IP地址和名称,根据实际情况修改。</think>以下是手动安装 etcd 并完成三节点集群部署的详细步骤: --- ### **一、准备工作** 1. **服务器信息**(示例,根据实际替换): - **Node1**: 192.168.1.101,主机名 `etcd-node1` - **Node2**: 192.168.1.102,主机名 `etcd-node2` - **Node3**: 192.168.1.103,主机名 `etcd-node3` 2. **依赖环境**: - 所有节点安装 `wget`、`tar`。 - 确保节点间网络互通(开放 `2379`、`2380` 端口)。 --- ### **二、安装 etcd** 在所有节点执行以下步骤: #### 1. 下载并解压 etcd ```bash ETCD_VER=v3.5.13 # 选择稳定版本 wget https://github.com/etcd-io/etcd/releases/download/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz tar -xvf etcd-${ETCD_VER}-linux-amd64.tar.gz cd etcd-${ETCD_VER}-linux-amd64 ``` #### 2. 移动二进制文件到系统路径 ```bash sudo mv etcd etcdctl /usr/local/bin/ ``` #### 3. 验证安装 ```bash etcd --version ``` --- ### **三、配置 etcd 集群** #### 1. 创建配置文件目录 ```bash sudo mkdir -p /etc/etcd /var/lib/etcd sudo chmod 700 /var/lib/etcd ``` #### 2. 生成 systemd 服务文件 编辑文件 `/etc/systemd/system/etcd.service`,内容如下(以 Node1 为例): ```ini [Unit] Description=etcd key-value store Documentation=https://github.com/etcd-io/etcd [Service] Type=notify Environment=ETCD_NAME=etcd-node1 # 修改节点名称 Environment=ETCD_DATA_DIR=/var/lib/etcd ExecStart=/usr/local/bin/etcd \ --advertise-client-urls=https://192.168.1.101:2379 \ # 本节点IP --initial-advertise-peer-urls=https://192.168.1.101:2380 \ --listen-client-urls=https://0.0.0.0:2379 \ --listen-peer-urls=https://0.0.0.0:2380 \ --initial-cluster-token=etcd-cluster-1 \ --initial-cluster=etcd-node1=https://192.168.1.101:2380,etcd-node2=https://192.168.1.102:2380,etcd-node3=https://192.168.1.103:2380 \ --initial-cluster-state=new \ --auto-compaction-retention=1 \ --quota-backend-bytes=8589934592 Restart=always RestartSec=5 [Install] WantedBy=multi-user.target ``` #### 3. 其他节点配置 - 在 **Node2** 和 **Node3** 重复上述步骤,修改以下参数: - `ETCD_NAME`(如 `etcd-node2`) - IP地址(`192.168.1.102` 和 `192.168.1.103`) --- ### **四、启动集群** 在所有节点执行: ```bash sudo systemctl daemon-reload sudo systemctl enable etcd sudo systemctl start etcd ``` --- ### **五、验证集群状态** 任意节点执行: ```bash etcdctl --endpoints=192.168.1.101:2379,192.168.1.102:2379,192.168.1.103:2379 endpoint status --write-out=table ``` 输出应显示三节点均为 `Healthy`。 --- ### **六、测试读写** ```bash # 写入数据 etcdctl --endpoints=192.168.1.101:2379 put mykey "Hello etcd" # 读取数据 etcdctl --endpoints=192.168.1.101:2379 get mykey ``` --- ### **七、安全加固(可选)** 生产环境中建议启用 TLS 加密: 1. 生成 CA 证书和节点证书。 2. 在 `etcd.service` 文件中添加 TLS 参数: ```bash --cert-file=/path/to/server.crt \ --key-file=/path/to/server.key \ --peer-cert-file=/path/to/peer.crt \ --peer-key-file=/path/to/peer.key \ --trusted-ca-file=/path/to/ca.crt \ --peer-trusted-ca-file=/path/to/ca.crt ``` --- ### **常见问题** 1. **节点无法加入集群**:检查防火墙设置和 `initial-cluster` 参数中的 IP/端口。 2. **启动失败**:通过 `journalctl -u etcd` 查看日志。 3. **数据不一致**:确保所有节点使用相同的 `initial-cluster-token`。 --- 通过以上步骤,您已完成三节点 etcd 集群的部署。根据实际需求调整参数(如数据目录、资源限制等)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值