首页 > 其他分享 >etcd集群部署

etcd集群部署

时间:2024-08-16 17:05:12浏览次数:10  
标签:pem 部署 ca 192.168 -- 集群 etcd data

etcd集群部署

一、环境准备

  1、准备3台服务器。

 

操作系统  IP地址 主机名
CentOS7.9 192.168.110.12 etcd1
CentOS7.9 192.168.110.13 etcd2
CentOS7.9 192.168.110.15 etcd3

 

  2、配置3台服务器hosts。(3个节点相同操作)

  vim /etc/hosts

192.168.110.12 etcd1
192.168.110.13 etcd2
192.168.110.15 etcd3

 

  3、配置3台服务器时间同步。(3个节点相同操作)

yum -y install ntpd
vim /etc/ntp.conf
    #修改server的信息为时间服务器的信息,这里设置为阿里云的时间服务器
    server ntp1.aliyun.com iburst
    server ntp2.aliyun.com iburst
    server ntp3.aliyun.com iburst

 

  4、配置防火墙,放开时间ntpd服务端口。(3个节点相同操作)

firewall-cmd --permanent --add-port=123/udp
firewall-cmd --reload

 

  5、启动ntpd服务,并检查ntp同步状态。(3个节点相同操作)

systemctl start ntpd
systemctl enable ntpd
ntpq -p

 

二、生成etcd自签证书。(只在etcd1上操作)

  1、下载CFSSL工具。

wget https://github.com/cloudflare/cfssl/releases/download/v1.6.3/cfssl_1.6.3_linux_amd64
wget https://github.com/cloudflare/cfssl/releases/download/v1.6.3/cfssl-certinfo_1.6.3_linux_amd64
wget https://github.com/cloudflare/cfssl/releases/download/v1.6.3/cfssljson_1.6.3_linux_amd64

 

  2、将二进制包移动至/usr/local/bin/下,并赋予权限。

mv cfssl_1.6.3_linux_amd64 /usr/local/bin/cfssl
mv cfssl-certinfo_1.6.3_linux_amd64  /usr/local/bin/cfssl-certinfo
mv cfssljson_1.6.3_linux_amd64 /usr/local/bin/cfssljson
chmod u+x /usr/local/bin/cfssl
chmod u+x /usr/local/bin/cfssl-certinfo
chmod u+x /usr/local/bin/cfssljson

 

  3、创建证书目录。(3个节点相同操作)

mkdir -p /data/etcd/{bin,ssl,data}

 

  4、进入证书目录,创建CA配置文件。

cd /data/etcd/ssl
cat > ca-config.json <<EOF
{
    "signing": {
        "default": {
            "expiry": "262800h"
        },
        "profiles": {
            "etcd": {
                "expiry": "262800h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "server auth",
                    "client auth"
                ]
            }
        }
    }
}
EOF

 

  5、创建CA证书信息文件。(etcd1节点操作)

cat > ca-csr.json << EOF
{
    "CN": "Etcd CA",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "ST": "Beijing",
            "L": "Beijing",
            "O": "Etcd CA",
            "OU": "Etcd CA"
        }
    ]
}
EOF

 

  6、生成CA秘钥和证书

cfssl gencert -initca ca-csr.json | cfssljson -bare ca

  这会生成两个文件:ca.pem(CA 证书)和 ca-key.pem(CA 私钥)。

 

  7、创建etcd证书信息文件

cat > server-csr.json << EOF
{
    "CN": "etcd-server",
    "hosts": [
        "localhost",
        "127.0.0.1",
        "192.168.110.12",
        "192.168.110.13",
        "192.168.110.15",
        "192.168.110.16",
        "192.168.110.17",
        "etcd1",
        "etcd2",
        "etcd3",
        "etcd4",
        "etcd5",   
        "etcd1.com",
        "*.etcd1.com"
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "ST": "Beijing",
            "L": "Beijing",
            "O": "Etcd Server",
            "OU": "Etcd Server"
        }
    ]
}
EOF      

  这里在配置etcd证书信息时,在hosts项中加入了预留地址,以便后期扩容,如果不确定预留地址信息可以使用通配符域名的方式,后期使用dns解析的方式来解决证书不匹配的问题。

  

  8、生成etcd证书。

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=etcd server-csr.json | cfssljson -bare server

  这会生成两个文件:server.pem(etcd 证书)和 server-key.pem(etcd 证书私钥)。

 

  9、传输证书和私钥到etcd2和etcd3

scp *.pem etcd2:/data/etcd/ssl
scp *.pem etcd3:/data/etcd/ssl

 

部署etcd集群(3个节点相同操作)

  1、下载etcd二进制包。

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

 

  2、解压,移动命令文件,配置环境变量

tar zxf etcd-v3.5.15-linux-amd64.tar.gz
cp etcd-v3.5.15-linux-amd64/etcd* /data/etcd/bin/
echo "export PATH=/data/etcd/bin:\$PATH" > /etc/profile.d/etcd.sh
source /etc/profile.d/etcd.sh

 

  3、创建systemd管理文件。

cat > /usr/lib/systemd/system/etcd.service << EOF

[Unit]
Description=Etcd Service
After=network.target

 

[Service]
Type=notify
ExecStart=/data/etcd/bin/etcd \
--name=etcd1 \
--cert-file=/data/etcd/ssl/server.pem \
--key-file=/data/etcd/ssl/server-key.pem \
--peer-cert-file=/data/etcd/ssl/server.pem \
--peer-key-file=/data/etcd/ssl/server-key.pem \
--trusted-ca-file=/data/etcd/ssl/ca.pem \
--peer-trusted-ca-file=/data/etcd/ssl/ca.pem \
--peer-client-cert-auth \
--client-cert-auth \
--initial-advertise-peer-urls=https://192.168.110.12:2380 \
--listen-peer-urls=https://192.168.110.12:2380 \
--listen-client-urls=https://192.168.110.12:2379,https://127.0.0.1:2379 \
--advertise-client-urls=https://192.168.110.12:2379 \
--initial-cluster-token=etcd-cluster-1 \
--initial-cluster=etcd1=https://192.168.110.12:2380,etcd2=https://192.168.110.13:2380,etcd3=https://192.168.110.15:2380 \
--initial-cluster-state=new \
--data-dir=/data/etcd/data

 

Restart=on-failure
RestartSec=5


[Install]
WantedBy=multi-user.target

EOF

  其中红色部分信息根据不同的节点进行配置,蓝色部分信息根据自己定义的name信息进行配置。

 

  4、启动etcd服务,设置开机启动

systemctl start etcd
systemctl enable etcd

 

   5、查看集群状态。

etcdctl --endpoints=https://192.168.110.12:2379,https://192.168.110.13:2379,https://192.168.110.15:2379 \
  --cacert=/data/etcd/ssl/ca.pem \
  --cert=/data/etcd/ssl/server.pem \
  --key=/data/etcd/ssl/server-key.pem \
  endpoint health

 

 

 

标签:pem,部署,ca,192.168,--,集群,etcd,data
From: https://www.cnblogs.com/NanZhiHan/p/18362326

相关文章

  • MySQL-主主模式集群部署
    目录一、简介什么是双主复制二、服务器规划三、安装MySQL1.下载安装包1.1关闭防火墙2.创建相关目录3.配置环境变量4.初始化数据库A4.1设置环境变量4.2初始化配置文件4.3初始化数据目录4.4配置启动脚本4.5启动MYSQL4.6设置root密码4.7允许root远程登录5.初始化数据库B5.1......
  • Nginx部署时反向代理双斜杠问题
    我的Django+Vue前后端分离的项目,当我打包上服务后发现我的接口出现了双斜杠,Django无法识别比如这:种http://host//file_list,双斜杠出现在了中间本带开发环境和服务器的区别是服务器多了一层nginx代理,罪魁祸首应该发生在Nginx上;然后去网上查了一些方法,都不管用,最后还是ChatGP......
  • 利用 Cloudflare Pages 部署免费 Telegraph 图床
    TelegraphImage是一个可以作为Flickr和imgur替代品的免费图片托管服务。本教程将指导您如何通过CloudflarePages免费部署和使用TelegraphImage。项目地址https://github.com/cf-pages/Telegraph-Image部署步骤准备工作首先,确保您拥有一个Cloudflare账户,并已将......
  • Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI
    Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程XorbitsInference(Xinference)是一个开源平台,用于简化各种AI模型的运行和集成。借助Xinference,您可以使用任何开源LLM、嵌入模型和多模态模型在云端或本地环境中运行推理,并......
  • 【私有云场景案例分享①】高效的集群管理能力
    此文章来源于项目官方公众号:“AirtestProject”版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途一、前言设备的管理对企业至关重要,会影响生产效率、成本控制和竞争力。然而,企业在设备管理上面临设备数量多、设备分布广、维护成本高等挑战。DeviceKeeper设备管......
  • Win10 部署 Confluence 文档管理系统
    Win10部署Confluence文档管理系统Docker部署参考:https://www.cnblogs.com/1285026182YUAN/p/183361881.confluence相关软件下载链接:https://pan.baidu.com/s/19fWURtXg7ZTYds0KrHumXA提取码:55q9。已存储在百度云下载文件如下: confluence破解工具文件:  2.首......
  • Nexus部署和使用
      1.私服简介私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当Maven需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。      我们可以使......
  • Delphi开发新纪元:探索持续集成与持续部署的自动化之路
    标题:“Delphi开发新纪元:探索持续集成与持续部署的自动化之路”引言在软件工程领域,持续集成(CI)和持续部署(CD)是敏捷开发的关键实践,它们确保了代码的高质量和快速迭代。对于Delphi开发者而言,选择合适的CI/CD工具对于提高开发效率和软件质量至关重要。一、DelphiCI/CD工具概......
  • 基于SpringBoot+Vue+uniapp的考研图书电子商务平台的详细设计和实现(源码+lw+部署文档
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp的KTV包厢管理系统的详细设计和实现(源码+lw+部署文档+讲解
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......