etcd_install

网络规划
#关闭防火墙
sudo systemctl stop firewalld && sudo systemctl disable firewalld;
  1. 虚拟机3台:
  • ip: 10.0.0.30-32
  • 主机名: p8-etcd-node01-master, p8-etcd-node02-slave01, p8-etcd-node03-slave02
  • 命令:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
hostnamectl set-hostname p8-etcd-node01-master && hostname p8-etcd-node01-master;
  1. 安装:
  • 在线安装:
#安装
yum install -y etcd
#验证
rpm -qa etcd
#etcd-3.3.11-2.el7.centos.x86_64
etcdctl -v
#etcdctl version: 3.3.11
#API version: 2
  • 离线安装:
  1. 配置文件修改(每台localhost配置为自己的ip)
cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak
vi /etc/etcd/etcd.conf 
# 打开 ETCD_LISTEN_PEER_URLS 和 ETCD_INITIAL_ADVERTISE_PEER_URLS 的注释
# 将 localhost 替换成本机 ip; 增加127.0.0.1访问权限
ETCD_LISTEN_PEER_URLS="http://10.0.0.30:2380"
#无127.0.0.1:2379会报本机没有访问2379端口的权限
ETCD_LISTEN_CLIENT_URLS="http://10.0.0.30:2379,http://127.0.0.1:2379"

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.30:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.30:2379"

# ETCD_NAME 的值对应配置为 Master,  Node02,  Node03
ETCD_NAME="Master"

# 集群配置注释打开, default改为 ETCD_NAME 配置的值, 使用逗号分隔
ETCD_INITIAL_CLUSTER="Master=http://10.0.0.30:2380,Node02=http://10.0.0.31:2380,Node03=http://10.0.0.32:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

  1. 重启
#重启
systemctl restart etcd
#验证
etcdctl member list
#显示为
#5f44000e312e72: name=Node03 peerURLs=http://10.0.0.32:2380 clientURLs=http://10.0.0.32:2379 isLeader=false
#2ed06313262270a9: name=Node02 peerURLs=http://10.0.0.31:2380 clientURLs=http://10.0.0.31:2379 isLeader=false
#d3845ffbfa785ee1: name=Master peerURLs=http://10.0.0.30:2380 clientURLs=http://10.0.0.30:2379 isLeader=true

#命令测试
etcdctl set name gin
etcdctl get name

@echo off setlocal enabledelayedexpansion REM ========== ETCD 启动配置 ========== set "ETCD_HOME=D:\tools\etcd-v3.5.12-windows-amd64" set "ETCD_USER=root" set "ETCD_PASSWORD=Etcd@123" set "TOKEN_TTL=157680000" REM 5年有效期 set "LISTEN_PORT=2379" set "LOG_FILE=etcd_install.log" REM ========== 初始化设置 ========== chcp 65001 >nul echo 开始ETCD安装 > "%LOG_FILE%" echo. echo ===== ETCD 启动脚本 (带5年Token有效期) ===== echo 日志文件: %LOG_FILE% echo. REM ========== 终止旧进程 ========== echo 终止旧ETCD进程... tasklist | findstr /i "etcd.exe" >nul && ( taskkill /f /im etcd.exe >nul timeout /t 2 >nul echo 已终止ETCD进程 ) || echo 无运行中ETCD进程 REM ========== 创建目录 ========== echo 创建必要目录... if not exist "%ETCD_HOME%\data" ( mkdir "%ETCD_HOME%\data" 2>nul || ( echo 错误: 创建数据目录失败 goto :error ) echo 已创建数据目录 ) REM ========== 启动ETCD服务 ========== echo 启动ETCD服务... start "ETCD Server" etcd.exe --data-dir "%ETCD_HOME%\data" --listen-client-urls "http://0.0.0.0:%LISTEN_PORT%" --advertise-client-urls "http://localhost:%LISTEN_PORT%" echo 等待ETCD启动(3秒)... timeout /t 3 >nul REM ========== 健康检查 ========== echo 检查ETCD状态... etcdctl.exe --user="" endpoint health || ( echo ETCD启动失败 goto :cleanup ) REM ========== 启用认证 ========== echo 启用认证系统... etcdctl.exe --user="" user add "%ETCD_USER%:%ETCD_PASSWORD%" || goto :cleanup etcdctl.exe --user="" auth enable || goto :cleanup REM ========== 确保root用户有root角色 ========== echo 配置root用户权限... ( REM 创建root角色(如果不存在) etcdctl.exe --user="%ETCD_USER%:%ETCD_PASSWORD%" role add root 2>nul REM 授予root角色给root用户 etcdctl.exe --user="%ETCD_USER%:%ETCD_PASSWORD%" user grant-role %ETCD_USER% root 2>nul REM 授予所有权限给root角色 etcdctl.exe --user="%ETCD_USER%:%ETCD_PASSWORD%" role grant-permission root readwrite / >nul ) REM ========== 设置Token有效期 ========== echo 设置Token有效期(5年)... etcdctl.exe --user="%ETCD_USER%:%ETCD_PASSWORD%" auth token grant root %TOKEN_TTL% > token_info.txt 2>&1 if %errorlevel% equ 0 ( for /f "tokens=3" %%t in ('type token_info.txt ^| findstr /i "token"') do ( set "TOKEN=%%t" ) echo Token有效期设置成功: !TOKEN! ) else ( echo Token有效期设置失败 goto :cleanup ) del token_info.txt REM ========== 获取测试Token ========== echo 获取测试Token... etcdctl.exe --user="%ETCD_USER%:%ETCD_PASSWORD%" auth authenticate > token_response.txt 2>&1 for /f "tokens=3" %%t in ('type token_response.txt ^| findstr /i "token"') do ( set "TOKEN=%%t" ) if defined TOKEN ( echo 获取Token成功: !TOKEN! ) else ( echo 获取Token失败 ) del token_response.txt REM ========== 显示成功信息 ========== echo. echo ===== ETCD 启动成功! ===== echo 端口: %LISTEN_PORT% echo 数据目录: %ETCD_HOME%\data echo 用户: %ETCD_USER% echo 密码: %ETCD_PASSWORD% echo. echo 按 Ctrl+C 停止服务 echo. :keep_alive ping -n 2 127.0.0.1 >nul goto :keep_alive :cleanup taskkill /f /im etcd.exe >nul 2>&1 echo ETCD服务已停止 exit /b 0 纠正语法错误
06-23
@echo off setlocal enabledelayedexpansion REM ========== ETCD 启动配置 ========== set "ETCD_HOME=D:\tools\etcd-v3.5.12-windows-amd64" set "ETCD_USER=root" set "ETCD_PASSWORD=Etcd@123" set "TOKEN_TTL=157680000" REM 5年有效期 (5*365*24*3600) set "LISTEN_PORT=2379" REM ========== 初始化设置 ========== chcp 65001 >nul echo. echo ===== ETCD 启动脚本 (带5年Token有效期) ===== echo. REM ========== 终止旧进程 ========== echo [1/8] 终止旧ETCD进程... tasklist | findstr /i "etcd.exe" >nul && ( taskkill /f /im etcd.exe >nul timeout /t 2 >nul echo 已终止ETCD进程 ) || echo 无运行中ETCD进程 REM ========== 清理并创建数据目录 ========== echo [2/8] 清理并创建数据目录... REM 删除现有数据目录(如果存在) if exist "%ETCD_HOME%\data" ( rmdir /s /q "%ETCD_HOME%\data" >nul 2>&1 && ( echo 已删除旧数据目录 ) || ( echo 警告: 无法删除旧数据目录 ) ) REM 创建新的数据目录 mkdir "%ETCD_HOME%\data" 2>nul && ( echo 数据目录创建成功: %ETCD_HOME%\data ) || ( echo 错误: 创建数据目录失败 goto :error ) REM ========== 启动ETCD服务 ========== echo [3/8] 启动ETCD服务... start "ETCD Server" etcd.exe --data-dir "%ETCD_HOME%\data" --listen-client-urls "http://0.0.0.0:%LISTEN_PORT%" --advertise-client-urls "http://localhost:%LISTEN_PORT%" echo 等待服务启动(5秒)... timeout /t 5 >nul REM ========== 健康检查 ========== echo [4/8] 检查ETCD状态... etcdctl.exe endpoint health >nul && ( echo 服务状态正常 ) || ( echo 错误: ETCD启动失败 goto :cleanup ) REM ========== 启用认证 ========== echo [5/8] 配置用户认证... ( REM 创建用户 etcdctl.exe user add "%ETCD_USER%:%ETCD_PASSWORD%" >nul 2>&1 REM 启用认证 etcdctl.exe auth enable >nul 2>&1 REM 创建root角色 etcdctl.exe --user="%ETCD_USER%:%ETCD_PASSWORD%" role add root >nul 2>&1 REM 授予root角色 etcdctl.exe --user="%ETCD_USER%:%ETCD_PASSWORD%" user grant-role %ETCD_USER% root >nul 2>&1 REM 授予权限 etcdctl.exe --user="%ETCD_USER%:%ETCD_PASSWORD%" role grant-permission root readwrite / >nul 2>&1 ) && echo 认证配置成功 || ( echo 警告: 部分认证配置可能失败 ) REM ========== 设置Token有效期 ========== echo [6/8] 设置Token有效期... ( REM 使用正确命令设置Token有效期 etcdctl.exe --user="%ETCD_USER%:%ETCD_PASSWORD%" auth set-token-ttl root %TOKEN_TTL% >nul 2>&1 ) && echo Token有效期设置成功(5年) || ( echo 警告: Token有效期设置失败 ) REM ========== 获取测试Token ========== echo [7/8] 获取测试Token... set "TOKEN=" for /f "tokens=3" %%t in ('etcdctl.exe --user="%ETCD_USER%:%ETCD_PASSWORD%" auth authenticate 2^>^&1 ^| findstr /i "token"') do ( set "TOKEN=%%t" ) if defined TOKEN ( echo 获取Token成功: !TOKEN! ) else ( echo 获取Token失败 ) REM ========== 显示成功信息 ========== echo [8/8] ETCD启动完成! echo. echo ===== 服务信息 ===== echo 监听端口: %LISTEN_PORT% echo 数据目录: %ETCD_HOME%\data echo 用户名: %ETCD_USER% echo 密码: %ETCD_PASSWORD% echo. echo 管理命令: etcdctl --user="%ETCD_USER%:%ETCD_PASSWORD%" get /key echo 按 Ctrl+C 停止服务 echo ==================== echo. :keep_alive timeout /t 5 >nul goto :keep_alive :cleanup echo. echo 正在停止ETCD服务... taskkill /f /im etcd.exe >nul 2>&1 echo ETCD服务已停止 exit /b 0 :error echo. echo 安装过程中遇到错误 pause exit /b 1 优化下,内容不变
06-23
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值