etcd部署(基于v3.5.15)

etcd部署

  • 单节点部署
    • 下载etcd,解压etcd二进制包,并进入解压后目录
    • 创建数据目录
    • 移动可执行文件到/usr/local/bin/目录
    • 测试版本
    • 配置systemd管理
    • 启动etcd,设置开机启动
    • 验证
  • 集群部署(3节点)
    • 环境准备
      • 准备3台服务器
      • 配置3台服务器hosts
      • 配置3台服务器时间同步
      • 配置防火墙,放开时间ntpd服务端口
      • 启动ntpd服务,并检查ntp同步状态。
    • 生成etcd自签证书
      • 下载CFSSL工具
      • 将二进制包移动至/usr/local/bin/下,并赋予权限
      • 创建数据目录和证书目录
      • 进入证书目录,创建CA配置文件
      • 创建CA证书信息文件
      • 生成CA秘钥和证书
      • 创建etcd证书信息文件
      • 生成etcd证书
      • 传输证书和私钥到其它节点
    • 部署、启动etcd集群
      • 下载并移动二进制文件
      • 创建systemd管理文件
        • al931181
        • al931182
        • al931183
      • 启动etcd服务,设置开机启动
      • 查看集群状态

单节点部署

下载etcd,解压etcd二进制包,并进入解压后目录

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

etcd包目录

创建数据目录

mkdir -p /data/etcd/data

移动可执行文件到/usr/local/bin/目录

mv etcd etcdctl etcdutl /usr/local/bin/

其余文件可以删除了

测试版本

etcd --version

etcd版本

配置systemd管理

vim /usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd Service
After=network.target

[Service]
Type=notify
ExecStart=/usr/local/bin/etcd \
  --name etcd1 \
  --data-dir /data/etcd/data \
  --listen-peer-urls http://127.0.0.1:2380 \
  --listen-client-urls http://127.0.0.1:2379,http://10.168.31.180:2379 \
  --advertise-client-urls http://192.168.110.12:2379 \
  --initial-advertise-peer-urls http://127.0.0.1:2380 \
  --initial-cluster etcd1=http://127.0.0.1:2380 \
  --initial-cluster-state new \
  --initial-cluster-token etcd-1

Restart=on-failure
RestartSec=5

LimitNOFILE=40000

[Install]
WantedBy=multi-user.target

配置解释:

ExecStart: 指定 etcd 二进制文件的路径和启动参数。

–name: 指定节点的名称。

–data-dir: 存储 etcd 数据的目录;上面创建的目录/data/etcd/data。

–listen-peer-urls: 设置 etcd 节点监听其他节点的 URL。

–listen-client-urls: 设置 etcd 节点监听客户端请求的 URL。可以同时监听 localhost 和实际的服务器 IP 地址。

–advertise-client-urls: 客户端会通过此地址与 etcd 通信。

–initial-advertise-peer-urls: 广播给集群中其他节点的 URL。

–initial-cluster: 指定集群中节点的配置。在单节点模式下,这里仅包括当前节点。

–initial-cluster-state: 指定集群的初始状态。在新建集群时使用 new。

Restart 和 RestartSec: 如果 etcd 进程崩溃或退出,服务会在 5 秒后自动重启。

LimitNOFILE: 增加文件描述符的限制,适应 etcd 的高并发需求。

启动etcd,设置开机启动

systemctl start etcd
systemctl enable etcd

验证

etcdctl put mytest "asd"

etcdctl get mytest

测试验证

集群部署(3节点)

环境准备

三个节点都需要操作

准备3台服务器

操作系统IP地址主机名
alma linux9.310.168.31.181al931181
alma linux9.310.168.31.182al931182
alma linux9.310.168.31.183al931183

配置3台服务器hosts

vim /etc/hosts
## 增加以下配置
10.168.31.181 al931181 
10.168.31.182 al931182 
10.168.31.183 al931183 

配置3台服务器时间同步

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

配置防火墙,放开时间ntpd服务端口

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

启动ntpd服务,并检查ntp同步状态。

systemctl start ntpd
systemctl enable ntpd
ntpq -p

生成etcd自签证书

只在al931181节点上面操作

下载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

将二进制包移动至/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个节点相同操作

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

进入证书目录,创建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

创建CA证书信息文件

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

生成CA秘钥和证书

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

生成三个文件:ca.csr(证书签名请求 )、ca.pem(CA 证书)和 ca-key.pem(CA 私钥)。
证书文件1

创建etcd证书信息文件

cat > server-csr.json << EOF
{
    "CN": "etcd-server",
    "hosts": [
        "localhost",
        "127.0.0.1",
        "10.168.31.180",
        "10.168.31.181",
        "10.168.31.182",
        "10.168.31.183",
        "al931180",
        "al931181",
        "al931182",
        "al931183",
        "al931180.etcd.top",
        "al931181.etcd.top",
        "al931182.etcd.top",
        "al931183.etcd.top",
        "*.etcd.top"
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "ST": "Beijing",
            "L": "Beijing",
            "O": "Etcd Server",
            "OU": "Etcd Server"
        }
    ]
}
EOF  

host里面预留地址信息,以便后续扩容。可以使用通配符域名的进行地址的预留,后续使用dns解析的方式解决证书不匹配的问题。

生成etcd证书

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

这会生成三个文件:server.csr(证书签名请求 )、server.pem(etcd 证书)和 server-key.pem(etcd 证书私钥)。
证书文件2

传输证书和私钥到其它节点

scp *.pem al931182:/data/etcd/ssl
scp *.pem al931183:/data/etcd/ssl

部署、启动etcd集群

三个节点相同操作

下载并移动二进制文件

下载和移动二进制文件同单机部署

创建systemd管理文件

al931181
cat > /usr/lib/systemd/system/etcd.service << EOF
[Unit]
Description=Etcd Service
After=network.target

[Service]
Type=notify
ExecStart=/usr/local/bin/etcd \
--name=al931181 \
--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://10.168.31.181:2380 \
--listen-peer-urls=https://10.168.31.181:2380 \
--listen-client-urls=https://10.168.31.181:2379,https://127.0.0.1:2379 \
--advertise-client-urls=https://10.168.31.181:2379 \
--listen-metrics-urls=http://0.0.0.0:2381 \
--initial-cluster-token=etcd-cluster \
--initial-cluster=al931181=https://10.168.31.181:2380,al931182=https://10.168.31.182:2380,al931183=https://10.168.31.183:2380 \
--initial-cluster-state=new \
--data-dir=/data/etcd/data

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

EOF
al931182
cat > /usr/lib/systemd/system/etcd.service << EOF
[Unit]
Description=Etcd Service
After=network.target

[Service]
Type=notify
ExecStart=/usr/local/bin/etcd \
--name=al931182 \
--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://10.168.31.182:2380 \
--listen-peer-urls=https://10.168.31.182:2380 \
--listen-client-urls=https://10.168.31.182:2379,https://127.0.0.1:2379 \
--advertise-client-urls=https://10.168.31.182:2379 \
--listen-metrics-urls=http://0.0.0.0:2381 \
--initial-cluster-token=etcd-cluster \
--initial-cluster=al931181=https://10.168.31.181:2380,al931182=https://10.168.31.182:2380,al931183=https://10.168.31.183:2380 \
--initial-cluster-state=new \
--data-dir=/data/etcd/data

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

EOF
al931183
cat > /usr/lib/systemd/system/etcd.service << EOF
[Unit]
Description=Etcd Service
After=network.target

[Service]
Type=notify
ExecStart=/usr/local/bin/etcd \
--name=al931183 \
--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://10.168.31.183:2380 \
--listen-peer-urls=https://10.168.31.183:2380 \
--listen-client-urls=https://10.168.31.183:2379,https://127.0.0.1:2379 \
--advertise-client-urls=https://10.168.31.183:2379 \
--listen-metrics-urls=http://0.0.0.0:2381 \
--initial-cluster-token=etcd-cluster \
--initial-cluster=al931181=https://10.168.31.181:2380,al931182=https://10.168.31.182:2380,al931183=https://10.168.31.183:2380 \
--initial-cluster-state=new \
--data-dir=/data/etcd/data

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

EOF

参数详解:

–name:指定 Etcd 成员的唯一名称。此名称用于标识集群中的特定 Etcd 成员,并且必须在整个集群中是唯一的。
–cert-file:指定服务器证书文件的路径。此文件包含了服务器的公钥证书,用于加密客户端与 Etcd 之间的通信。
–key-file:指定服务器私钥文件的路径。此文件包含了服务器的私钥,用于解密客户端与 Etcd 之间的通信。
–peer-cert-file:指定对等节点证书文件的路径。此文件包含了 Etcd 成员之间通信时使用的证书。
–peer-key-file:指定对等节点私钥文件的路径。此文件包含了 Etcd 成员之间通信时使用的私钥。
–trusted-ca-file:指定受信任的证书颁发机构 (CA) 证书文件的路径。此文件包含了 CA 的证书,用于验证客户端证书的真实性。
–peer-trusted-ca-file:指定受信任的证书颁发机构 (CA) 证书文件的路径,用于验证对等节点证书。此文件包含了 CA 的证书,用于验证对等节点证书的真实性。
–peer-client-cert-auth:启用对等节点间的证书验证。如果设置为 true,则 Etcd 成员之间通信时会验证对方的证书。
–client-cert-auth:启用客户端证书验证。如果设置为 true,则 Etcd 会验证客户端提供的证书。
–initial-advertise-peer-urls:指定 Etcd 成员向集群其他成员广播的 URL。这是其他 Etcd 成员用来与当前成员通信的 URL。
–listen-peer-urls:指定 Etcd 成员监听来自其他成员的 URL。这是 Etcd 成员监听其他成员通信请求的 URL。
–listen-client-urls:指定 Etcd 成员监听来自客户端的 URL。这是 Etcd 成员监听客户端请求的 URL。
–advertise-client-urls:指定 Etcd 成员向客户端广播的 URL。这是客户端用来与当前 Etcd 成员通信的 URL。
–listen-metrics-urls:指定 metrics 接口运行在 2381 端口下面的,而且是 http 的协议。
–initial-cluster-token:指定集群的唯一标识符。这是一个唯一的字符串,用于标识集群。
–initial-cluster:指定集群中所有成员的初始信息。这是一个逗号分隔的列表,包含集群中所有成员的名称、URL 和投票权重。
–initial-cluster-state:指定集群的初始状态。可以设置为 new 或 existing。如果设置为 new,表示创建一个新的集群;如果设置为 existing,表示加入现有集群。
–data-dir:指定 Etcd 数据目录的路径。这是 Etcd 存储持久化数据的地方。

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

systemctl start etcd
systemctl enable etcd

查看集群状态

etcdctl --endpoints=https://10.168.31.181:2379,https://10.168.31.182:2379,https://10.168.31.183:2379 \
  --cacert=/data/etcd/ssl/ca.pem \
  --cert=/data/etcd/ssl/server.pem \
  --key=/data/etcd/ssl/server-key.pem \
  endpoint health

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/918794.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML5实现趣味飞船捡金币小游戏(附源码)

文章目录 1.设计来源1.1 主界面1.2 游戏中界面1.2 飞船边界框效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/143799554 HTML5实现趣味飞船捡金币小游戏(附源码)&…

ASP.NET Core Webapi 返回数据的三种方式

ASP.NET Core为Web API控制器方法返回类型提供了如下几个选择&#xff1a; Specific type IActionResult ActionResult<T> 1. 返回指定类型&#xff08;Specific type&#xff09; 最简单的API会返回原生的或者复杂的数据类型&#xff08;比如&#xff0c;string 或者…

汽车资讯新动力:Spring Boot技术驱动

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

Go语言跨平台桌面应用开发新纪元:LCL、CEF与Webview全解析

开篇寄语 在Go语言的广阔生态中&#xff0c;桌面应用开发一直是一个备受关注的领域。今天&#xff0c;我将为大家介绍三款基于Go语言的跨平台桌面应用开发框架——LCL、CEF与Webview&#xff0c;它们分别拥有独特的魅力和广泛的应用场景。通过这三款框架&#xff0c;你将能够轻…

如何确保爬取的数据准确性和完整性?

在数据驱动的业务环境中&#xff0c;爬虫程序的准确性和完整性至关重要。本文将探讨如何使用Java编写爬虫程序&#xff0c;并确保其在爬取数据时的准确性和完整性。 1. 精确的HTML解析 确保数据准确性的第一步是精确地解析HTML。Jsoup是Java中常用的HTML解析库&#xff0c;它提…

【linux】如何扩展磁盘容量(VMware虚拟机)-转载

如何扩展磁盘容量(VMware虚拟机) 一、前置准备工作 扩展虚拟机磁盘前&#xff0c;需要先把虚拟机关机才能进行扩展磁盘操作 1.选择虚拟机设置&#xff0c;如下图所示 2.输入你想扩展的磁盘容量&#xff0c;以本次实操为例&#xff0c;我这里输入的30G&#xff08;具体按照实…

esp32学习:windows下idf离线安装(最简单)

很多朋友学习esp32时发现&#xff0c;安装idf很麻烦&#xff0c;需要很多依赖&#xff0c;那有没有简单的方法呢&#xff0c;答案是肯定的. 乐鑫Windows 平台工具链的标准设置 - ESP32-S3 - — ESP-IDF 编程指南 release-v5.0 文档编程指南里提供了windows下离线安装包 dl.espr…

tensorflow案例6--基于VGG16的猫狗识别(准确率99.8%+),以及tqdm、train_on_batch的简介

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 本次还是学习API和如何搭建神经网络为主&#xff0c;这一次用VGG16去对猫狗分类&#xff0c;效果还是很好的&#xff0c;达到了99.8% 文章目录 1、tqdm…

Amazon Web Services (AWS)

一、Amazon Web Services (AWS)介绍 1、简介 2、产品 AWS 提供了各种云计算服务&#xff0c;包括 DynamoDB、S3、EC2、Lambda 等等。 登录aws后点击所有服务也可以看到amazon的所有服务&#xff1a; 3、免费试用产品 除了免费的Amazon Step Functions、Amazon Lambda&#…

Quartus+Nios II for eclipse问题合集

由于对于FPGANIOS II 的工作需要&#xff0c;对工作过程中遇到的问题进行记录&#xff0c;持续更新。 1、BSP directory does not exist: . Stop.Nios II使用过程中遇到的一些问题2_error executing nios2-bsp-generate-files --bsp-di-CSDN博客https://blog.csdn.net/qq_39485…

Java项目:校园宿舍管理系统(优质版)(Springboot3+Maven+Mybatis Plus+Vue3+ Element Plus+Mysql)

项目介绍 : Springboot3MavenMybatis PlusVue3 Element PlusMysql 开发的前后端分离的校园宿舍管理系统 项目演示: https://www.bilibili.com/video/BV16UmoYWEVR/ 运行环境: 最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 IDE环境&#x…

RabbitMQ教程:发布/订阅模式(Publish/Subscribe)(三)

文章目录 RabbitMQ教程&#xff1a;发布/订阅模式&#xff08;Publish/Subscribe&#xff09;&#xff08;三&#xff09;一、引言二、简介三、准备工作3.1 说明3.2 生成项目 四、实战4.1 交换机&#xff08;Exchanges&#xff09;4.2 临时队列&#xff08;Temporary Queues&am…

SpringBoot(6)-Shiro

目录 一、是什么 二、准备工作 2.1 环境搭建 2.2 自定义Realm配置类 2.3 自定义shiro配置类 三、实践 3.1 请求拦截 3.2 用户认证 3.3 用户授权 3.4 shiro和thymeleaf整合 一、是什么 是java的一个安全框架 核心三大对象&#xff1a; 1、Subject【用户】 2、Secur…

Misc_01转二维码(不是二进制)

例题ctfhub/隐写v2.0 打开是一张图片 文件分离得到zip&#xff0c;爆破密码得到7878 打开得到0和1&#xff0c; !!!不是二进制转图片&#xff0c;直接是二维码 缩小能看到 000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000…

使用 K-means 算法进行豆瓣读书数据的文本聚类分析

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

STM32完全学习——F407ZGT6点亮LED

一、寄存器描述 我们想要点亮LED&#xff0c;无非就是对于寄存器的一些设置&#xff0c;主要分为两步&#xff0c;首先是需要打开相应GPIO的时钟&#xff0c;这是因为STM32在上电后&#xff0c;每个外设的时钟默认都是关闭的&#xff0c;需要我们手动打开。其次就是对GPIO的一…

Dubbo RPC线程模型

消费端线程模型&#xff0c;提供者端线程模型 消费端线程模型 对 2.7.5 版本之前的 Dubbo 应用&#xff0c;尤其是一些消费端应用&#xff0c;当面临需要消费大量服务且并发数比较大的大流量场景时&#xff08;典型如网关类场景&#xff09;&#xff0c;经常会出现消费端线程…

Python酷库之旅-第三方库Pandas(225)

目录 一、用法精讲 1056、pandas.PeriodIndex.dayofweek属性 1056-1、语法 1056-2、参数 1056-3、功能 1056-4、返回值 1056-5、说明 1056-6、用法 1056-6-1、数据准备 1056-6-2、代码示例 1056-6-3、结果输出 1057、pandas.PeriodIndex.day_of_week属性 1057-1、…

商业物联网详细指南:优势与挑战

物联网是信息技术行业最具前景的领域之一。为什么它如此热门呢&#xff1f;原因在于全球连接性。设备可以像人群一样相互协作。正如我们所知&#xff0c;协作能显著提高生产力。 物联网对普通用户和企业都有益处。许多日常流程可以通过传感器、扫描仪、摄像头和其他设备实现自…

Spring Boot汽车资讯:科技与汽车的新融合

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了汽车资讯网站的开发全过程。通过分析汽车资讯网站管理的不足&#xff0c;创建了一个计算机管理汽车资讯网站的方案。文章介绍了汽车资讯网站的系统分析部分&…