当前位置: 首页 > news >正文

(四)搭建容器云管理平台笔记—安装ETCD(不使用证书)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、参考介绍

etcd是什么?

A highly-available key value store for shared configuration and service discovery.

是一个用作分布式共享配置和服务发现的高可用键值对(强一致性)存储仓库

根据它的定义,它最主要场景在于:

1. 分布式系统的配置共享问题

2. 分布式系统的服务发现问题

 

二、部署

kubernetes使用etcd组件作为它状态控制组件,在部署的时候如果只单etcd模式,通常与master安装在一台机器

1. 下载

选择最新文档版Etcd v3.2.13 https://github.com/coreos/etcd/releases

CentOs75下载选择:

# wget https://github.com/coreos/etcd/releases/download/v3.2.13/etcd-v3.2.13-linux-amd64.tar.gz

解压缩后目录结构如下:

drwxrwxr-x. 11 1000 1000 4096 Jan 3 06:01 Documentation

-rwxrwxr-x. 1 1000 1000 17829696 Jan 3 06:01 etcd

-rwxrwxr-x. 1 1000 1000 15246720 Jan 3 06:01 etcdctl

-rw-rw-r--. 1 1000 1000 33849 Jan 3 06:01 README-etcdctl.md

-rw-rw-r--. 1 1000 1000 5801 Jan 3 06:01 README.md

-rw-rw-r--. 1 1000 1000 7855 Jan 3 06:01 READMEv2-etcdctl.md

将etcd、etcdctl复制到/usr/bin目录

# cp etcd /usr/bin

# cp etcdctl /usr/bin



#chmod 777 /usr/bin/etcd

#chmod 777 /usr/bin/etcdctl

注意:二进制安装没有etcd.conf文件,需要自己参考官方编写,如果是yum安装则会自动帮你生成一份conf文件。

#使用yum安装

yum install -y etcd

mkdir /opt/etcd

2. 修改环境变量

添加环境变量,指定客户端工具etcdctl使用api v3和服务器程序etcd进行通信。

#export ETCDCTL_API=3

 

3.设置systemd服务文件(单机模式,非集群模式)

在/etc/systemd/system/目录里创建etcd.service,其内容如下:

[Unit]

Description=etcd.service

[Service]

Type=notify

TimeoutStartSec=0

Restart=always

WorkingDirectory=/var/lib/etcd

EnvironmentFile=--/etc/etcd/etcd.conf

ExecStart=/usr/bin/etcd

[Install]

WantedBy=multi-user.target

其中WorkingDirectory为etcd数据库目录,需要在etcd安装前创建

# mkdir /var/lib/etcd

最好连/var/lib/etcd/etcd.conf一并创建,即便是空文件

注意:EnvironmentFile=--/etc/etcd/etcd.conf 这个路径,如果是yum安装也是默认这个路径

单机简版配置:

ETCD_NAME=ETCD Server

ETCD_DATA_DIR="/var/lib/etcd/"

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.137.3:2379"

4. 设置开机启动

#systemctl daemon-reload

#systemctl enable etcd.service

#systemctl start etcd.service

 

问题:启动报“status=203/EXEC” 错误,启动报失败

操作:chmod 777 修改执行文件权限,预先创建好/var/lib/etcd目录及其/var/lib/etcd/etcd.conf文件

 

5. 检查是否成功启动

命令1:# systemctl status etcd

命令2:# etcdctl cluster-health

# etcdctl member list 查看集群状态

结果:member 8e9e05c52164694d is healthy: got healthy result from http://localhost:2379

注意:如果etcd.conf 为空文件,那么etcd使用默认配置

参考配置文件etcd.conf

#[Member]

ETCD_DATA_DIR="/var/lib/etcd/etcd1"

ETCD_LISTEN_PEER_URLS="http://192.168.80.130:2380"

ETCD_LISTEN_CLIENT_URLS="http://192.168.80.130:2379,http://127.0.0.1:2379"

ETCD_NAME="member1"

#[Clustering]

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.80.130:2380"

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.80.130:2379"

ETCD_INITIAL_CLUSTER="member1=http://192.168.80.130:2380,member2=http://192.168.80.131:2380,memb

er3=http://172.18.2.23:2380"

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"

ETCD_INITIAL_CLUSTER_STATE="new"

#etcd2与etcd3配置文同上,需修改ip为自己的ip

注意:Clustering 为集群配置

这里的 ETCD_DATA_DIR 与 etcd.service 的 WorkingDirectory 是不一样的

 

6. 搭建etcd集群

单机参考:http://blog.csdn.net/chen798213337/article/details/78501042 (经配置OK)

集群参考:http://blog.csdn.net/chenhaifeng2016/article/details/71122886

主要是通过配置etcd.service来实现节点之间的互相监听

例如:

# set GOMAXPROCS to number of processors

ExecStart=/usr/local/src/etcd-v3.1.7-linux-amd64/etcd \

--name infra0 \

--initial-advertise-peer-urls http://10.0.0.201:2380 \

--listen-client-urls http://10.0.0.201:2379,http://127.0.0.1:2379 \

--listen-peer-urls http://10.0.0.201:2380 \

--advertise-client-urls http://10.0.0.201:2379 \

--initial-cluster-token etcd-cluster1 \

--initial-cluster infra0=http://10.0.0.201:2380,infra1=http://10.0.0.202:2380,infra2=http://10.0.0.203:2380 \

--initial-cluster-state new

从github可以看到 official etcd ports are 2379 for client requests, and 2380 for peer communication.

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/pagecorrect/blog/1635918

相关文章:

  • vuex入门
  • zookeeper集群的安装
  • Godot-3D教程-02.3D性能和局限性
  • markdown编写技巧
  • vuex 存值 及 取值 的操作
  • java的IO流的一些测试
  • 扒一扒,你有多少校友在阿里?实习就来阿里云。
  • LVS+keepalived+nginx
  • 0/1背包经典例题 入门动态规划
  • HDU 2242 考研路茫茫——空调教室(边双连通)
  • Inno 安装前检测.net framework 4.0
  • MySQL5.7 添加用户、删除用户与授权
  • Puppeteer:浏览器控制器
  • Centos 如何双击执行可执行程序
  • 大幕已拉开,人工智能离我们还有多远?
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [笔记] php常见简单功能及函数
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • ES6系列(二)变量的解构赋值
  • exports和module.exports
  • happypack两次报错的问题
  • JAVA 学习IO流
  • JavaScript学习总结——原型
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • session共享问题解决方案
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • vue2.0项目引入element-ui
  • Yeoman_Bower_Grunt
  • 聊聊hikari连接池的leakDetectionThreshold
  • 前言-如何学习区块链
  • 一个SAP顾问在美国的这些年
  • 说说我为什么看好Spring Cloud Alibaba
  • ​TypeScript都不会用,也敢说会前端?
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # 数据结构
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $GOPATH/go.mod exists but should not goland
  • (AngularJS)Angular 控制器之间通信初探
  • (Java数据结构)ArrayList
  • (poj1.2.1)1970(筛选法模拟)
  • (多级缓存)多级缓存
  • (二)JAVA使用POI操作excel
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (区间dp) (经典例题) 石子合并
  • (十一)c52学习之旅-动态数码管
  • (数据结构)顺序表的定义
  • (四) 虚拟摄像头vivi体验
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .net Signalr 使用笔记