【Linux】【Services】【SaaS】Docker+kubernetes(5. 安装和配置ETCD集群)
1. 简介:
1.1. ETCD是kubernetes和openstack都用到的组件,需要首先装好
1.2. 官方网站:https://coreos.com/etcd/
1.3. ETCD的作用:
Etcd是Kubernetes的存储状态的数据库。虽然Kubernetes系统中有重要的内存缓存,但Etcd被认为是记录系统状态。
Etcd的快速总结:它是一个集群分布式数据库,它可以提供分布式数据的一致性。这类的系统(如Zookeeper, Consul)是在 Google开发的chubby系统之后形成的,这些系统也称为"锁服务器",因为他们可以实现分布式锁。Etcd和chubby的数据模型是一个简单的层次化的Key,并存储了简单的非结构化value,这看起来像是一个文件系统。有意思的是,在Google, chubby 被频繁用于为实现访问本地文件和对象存储的功能的抽象文件接口。然而,分布式数据库的高度一致性,提供了数据的严格写入顺序并允许client原子性的对数据做更新操作。
可靠的系统的状态管理是任何系统中非常困难的一件事情。在分布式系统中,它是更加困难的,因为它引入了一致性算法,如raft或paxos。通过使用etcd,Kubernetes可以专注系统的其他部分。
Etcd的watch机制是Kubernetes工作的关键。系统允许client去执行轻量级的对于Key值变化事件的订阅。当要watch的数据发生变化时, client会立即得到通知。这可以用作分布式系统组件之间的协调机制。 一个组件一旦写入etcd,其他组件可以立即对该变化作出反应。
Etcd的消息机制正好和PubSub消息队列机制相反。在许多消息队列系统系统中,topic不存储真正的用户数据,但发布到这些topic的消息含有丰富的数据。对于像Etcd这样的系统,Key(类似于主题)存储了真实的数据而消息(数据变化通知)不含独特的丰富消息。换句话说,对于消息队列来说,topic很简单,而像Etcd则正好相反。
2. 环境:
2.1. etcd: 3.2.9-3.el7
2.2. 机器列表
| 功能与组件 | 机器名 | 服务IP | 管理IP | Processor Cores | RAM | Storage | 备注 |
| Mongo/Redis/RabbitMQ/Memorycached/Etcd | HCTJOSCACHE01 | 10.30.2.45 | 172.16.0.45 | ||||
| Mongo/Redis/RabbitMQ/Memorycached/Etcd | HCTJOSCACHE02 | 10.30.2.46 | 172.16.0.46 | ||||
| Mongo/Redis/RabbitMQ/Memorycached/Etcd | HCTJOSCACHE03 | 10.30.2.47 | 172.16.0.47 |
3. 安装:
3.1. 直接使用yum安装
yum install etcd
3.2. 再给ETCD创建一个独立的文件系统
# lvcreate -n lv_etcd -L 10G vg_system
# mkfs.xfs /dev/mapper/vg_system-lv_etcd
# mkdir -p /data/etcd
修改/etc/fstab
#etcd
/dev/mapper/vg_system-lv_etcd /data/etcd xfs defaults 0 0
mount -a
chown etcd:etcd /data/etcd
4. 配置:
4.1. 配置文件:/etc/etcd/etcd.conf
hctjoscache01
[root@hctjoscache01 ~]# grep -v "^#" /etc/etcd/etcd.conf
[Member]
ETCD_DATA_DIR="/data/etcd"
ETCD_LISTEN_PEER_URLS="http://172.16.0.45:2380"
ETCD_LISTEN_CLIENT_URLS="http://172.16.0.45:2379"
ETCD_NAME="hctjoscache01"
[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.0.45:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.0.45:2379"
ETCD_INITIAL_CLUSTER_TOKEN="k8s-cluster"
ETCD_INITIAL_CLUSTER="hctjoscache01=http://172.16.0.45:2380,hctjoscache02=http://172.16.0.46:2380,hctjoscache03=http://172.16.0.47:2380"
hctjoscache02
[root@hctjoscache02 ~]# grep -v "^#" /etc/etcd/etcd.conf
[Member]
ETCD_DATA_DIR="/data/etcd"
ETCD_LISTEN_PEER_URLS="http://172.16.0.46:2380"
ETCD_LISTEN_CLIENT_URLS="http://172.16.0.46:2379"
ETCD_NAME="hctjoscache02"
[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.0.46:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.0.46:2379"
ETCD_INITIAL_CLUSTER_TOKEN="k8s-cluster"
ETCD_INITIAL_CLUSTER="hctjoscache01=http://172.16.0.45:2380,hctjoscache02=http://172.16.0.46:2380,hctjoscache03=http://172.16.0.47:2380"
hctjoscache03
[root@hctjoscache03 ~]# grep -v "^#" /etc/etcd/etcd.conf
[Member]
ETCD_DATA_DIR="/data/etcd"
ETCD_LISTEN_PEER_URLS="http://172.16.0.47:2380"
ETCD_LISTEN_CLIENT_URLS="http://172.16.0.47:2379"
ETCD_NAME="hctjoscache03"
[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.0.47:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.0.47:2379"
ETCD_INITIAL_CLUSTER_TOKEN="k8s-cluster"
ETCD_INITIAL_CLUSTER="hctjoscache01=http://172.16.0.45:2380,hctjoscache02=http://172.16.0.46:2380,hctjoscache03=http://172.16.0.47:2380"
4.2. 编辑服务文件 /usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target [Service]
Type=notify
WorkingDirectory=/data/etcd
EnvironmentFile=-/etc/etcd/etcd.conf
User=etcd
# set GOMAXPROCS to number of processors
ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /usr/bin/etcd \
--name=\"${ETCD_NAME}\" \
--data-dir=\"${ETCD_DATA_DIR}\" \
--listen-client-urls=\"${ETCD_LISTEN_CLIENT_URLS}, http://127.0.0.1:2379\" \
--initial-advertise-peer-urls ${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
--listen-peer-urls ${ETCD_LISTEN_PEER_URLS} \
--advertise-client-urls ${ETCD_ADVERTISE_CLIENT_URLS} \
--initial-cluster-token ${ETCD_INITIAL_CLUSTER_TOKEN} \
--initial-cluster ${ETCD_INITIAL_CLUSTER} \
--initial-cluster-state new"
Restart=on-failure
LimitNOFILE=65536 [Install]
WantedBy=multi-user.target
4.3. 记得reload一下systemd
systemctl daemon-reload
4.4. 可以启动服务了
systemctl start etcd
注意:启动第一个节点时时间较长,因为etcd需要初始化集群,但是由于其他节点并没有启动,所以会超时,记得看一下日志
4.5.查看集群状态,要看到is healthy才算是正常
etcdctl cluster-health
【Linux】【Services】【SaaS】Docker+kubernetes(5. 安装和配置ETCD集群)的更多相关文章
- Docker&Kubernetes沙龙干货集锦:容器集群管理利器kubernetes详谈-CSDN.NET
Docker&Kubernetes沙龙干货集锦:容器集群管理利器kubernetes详谈-CSDN.NET undefined Package - crawler undefined 科学网- ...
- 使用docker配置etcd集群
docker配置etcd集群与直接部署etcd集群在配置上并没有什么太大差别. 我这里直接使用docker-compose来实现容器化的etcd部署 环境如下: HostName IP etcd1 1 ...
- 使用k8s operator安装和维护etcd集群
关于Kubernetes Operator这个新生事物,可以参考下文来了解这一技术的来龙去脉: https://yq.aliyun.com/articles/685522?utm_content=g_ ...
- Redis 安装、配置、集群
1. Redis的安装 1.1. Redis的安装 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 安装步骤: ...
- zookeeper之一 安装和配置(单机+集群)
这里我以zookeeper3.4.10.tar.gz来演示安装,安装到/usr/local/soft目录下. 一.单机版配置 1.安装和配置 #.下载 wget http://apache.fayea ...
- 使用Docker方式创建3节点的Etcd集群
一.简要说明 二.运行容器 三.验证集群 四.运行截图 五.参考链接 一.简要说明 参考etcd官网文档, 在node1.node2.node3三个节点上,分别运行etcd容器,创建etcd集 ...
- kubernetes上安装MongoDB-3.6.5集群副本集方式
一.安装部署: 想直接一步创建集群的小伙伴直接按以下步骤安装(再往后是记录自己出过的错): 1.生成docker镜像: docker build -t 144.202.127.156/library/ ...
- 安装和配置hadoop集群步骤
hadoop集群的安装步骤和配置 hadoop是由java语言编写的,首先我们肯定要在电脑中安装jdk,配置好jdk的环境,接下来就是安装hadoop集群的步骤了,在安装之前需要创建hadoop用户组 ...
- Zookeeper 2、Zookeeper的安装和配置(集群模式)
1.下载与解压 Zookeeper下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/ 下载完成以后解压到一个特定目录 同步时间所有节点的时间,并关 ...
随机推荐
- SpringCloud升级之路2020.0.x版-31. FeignClient 实现断路器以及线程隔离限流的思路
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 在前面一节,我们实现了 FeignClient 粘合 resilience4j 的 Ret ...
- golang常用库:日志记录库-logrus使用
介绍 logrus 它是一个结构化.插件化的日志记录库.完全兼容 golang 标准库中的日志模块.它还内置了 2 种日志输出格式 JSONFormatter 和 TextFormatter,来定义输 ...
- vue中this.$set的用法
之前了解这个方法的时候,感觉这一辈子也用不到这个方法,因为当时没有应用场景,但是还真有用的时候,我相信你们也有用到时候. 从三个方面给大家说一下这个this.$set: 1.this.$set实现什么 ...
- 美团饿了么领取外卖优惠券微信小程序的开发及上线_怎样点外卖省钱_外卖小程序的开发及上线
都1202年了,估计没人不知道外卖了,那么就有两种人在思考两种问题: 普通人:怎么点外卖划算? 程序员:怎么通过外卖赚钱? 话不多说,为了让你们相信我有能力来讲这块内容,先给你们看一个很简单的小程序: ...
- [gym102412D]The Jump from Height of Self-importance to Height of IQ Level
考虑使用平衡树维护该序列,操作显然可以用fhq treap的分裂+合并来实现 进一步的,问题即变为维护哪些信息来支持push up的操作(并判定是否存在$a_{i}<a_{j}<a_{k} ...
- 语音合成论文翻译:2019_MelGAN: Generative Adversarial Networks for Conditional Waveform Synthesis
论文地址:MelGAN:条件波形合成的生成对抗网络 代码地址:https://github.com/descriptinc/melgan-neurips 音频实例:https://melgan-neu ...
- spring boot 动态生成接口实现类
目录 一: 定义注解 二: 建立动态代理类 三: 注入spring容器 四: 编写拦截器 五: 新建测试类 在某些业务场景中,我们只需要业务代码中定义相应的接口或者相应的注解,并不需要实现对应的逻辑. ...
- Collections集合工具类的常用方法
Collections集合工具类的方法 addAll与shuffle import java.util.ArrayList; import java.util.Collections; /* - ja ...
- YAPI接口自动鉴权功能部署详解
安装准备 以下操作,默认要求自己部署过yapi,最好是部署过yapi二次开发环境. 无论是选择在线安装或者是本地安装,都需要安装client工具. 1.yapi-cli:npm install yap ...
- 浅谈java中的四个核心概念--思途青岛
Java已经成为一个庞大而复杂的技术平台,对于开发人员而言,要想更好的掌握Java技术,深入理解底层的技术处理细节必不可少. 现在介绍下java的四个核心概念: 1.Java虚拟机 Java虚拟机的主 ...