模拟备份和恢复,在现有的集群环境,单master(etcd), infra和node上面添加另外一台机器作为etcd Server.

基于OpenShift 3.11版本,详情可以参考

https://docs.openshift.com/container-platform/3.11/admin_guide/assembly_restoring-cluster.html#restoring-etcd-v3-snapshot

为了减少步骤,先clone那台master出来成为etcd1,然后修改ip,主机名,然后将上面的服务移除

# mkdir -p /etc/origin/node/pods-stopped
# mv /etc/origin/node/pods/* /etc/origin/node/pods-stopped/

然后开始具体步骤:

  • 修改双方机器的/etc/hosts加入节点
  • 生成新节点所需要的证书

master节点上操作

export NEW_ETCD_HOSTNAME="etcd1.example.com"
export NEW_ETCD_IP="192.168.56.109" export CN=$NEW_ETCD_HOSTNAME
export SAN="IP:${NEW_ETCD_IP}, DNS:${NEW_ETCD_HOSTNAME}"
export PREFIX="/etc/etcd/generated_certs/etcd-$CN/"
export OPENSSLCFG="/etc/etcd/ca/openssl.cnf"
# mkdir -p ${PREFIX}

# openssl req -new -config ${OPENSSLCFG} \
-keyout ${PREFIX}server.key \
-out ${PREFIX}server.csr \
-reqexts etcd_v3_req -batch -nodes \
-subj /CN=$CN # openssl ca -name etcd_ca -config ${OPENSSLCFG} \
-out ${PREFIX}server.crt \
-in ${PREFIX}server.csr \
-extensions etcd_v3_ca_server -batch # openssl req -new -config ${OPENSSLCFG} \
-keyout ${PREFIX}peer.key \
-out ${PREFIX}peer.csr \
-reqexts etcd_v3_req -batch -nodes \
-subj /CN=$CN # openssl ca -name etcd_ca -config ${OPENSSLCFG} \
-out ${PREFIX}peer.crt \
-in ${PREFIX}peer.csr \
-extensions etcd_v3_ca_peer -batch

将配置etcd.conf和ca.crt拷贝到master下为新的etcd节点配置的路径

# cp /etc/etcd/etcd.conf ${PREFIX}
# cp /etc/etcd/ca.crt ${PREFIX}
  • 添加节点,在master机器上操作

先member list一下,确保没有localhost

etcdctl --cert-file=/etc/etcd/peer.crt \
--key-file=/etc/etcd/peer.key \
--ca-file=/etc/etcd/ca.crt \
--peers="https://192.168.56.103:2379" member list
etcdctl -C https://192.168.56.103:2379 \
--ca-file=/etc/etcd/ca.crt \
--cert-file=/etc/etcd/peer.crt \
--key-file=/etc/etcd/peer.key member add ${NEW_ETCD_HOSTNAME} https://${NEW_ETCD_IP}:2380 Member 2bc199c384f701e3 added to cluster e99c0083931d3d79 ETCD_NAME="etcd1.example.com"
ETCD_INITIAL_CLUSTER="etcd1.example.com=https://192.168.56.109:2380,master.example.com=https://192.168.56.103:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.56.109:2380"
ETCD_INITIAL_CLUSTER_STATE="existing"
  • 修改配置

修改${PREFIX}/etcd.conf的各种值,按照上面的输出,主要是包括这些字段

ETCD_NAME

ETCD_INITIAL_CLUSTER

ETCD_INITIAL_CLUSTER_STATE

ETCD_LISTEN_PEER_URLS
ETCD_LISTEN_CLIENT_URLS
ETCD_INITIAL_ADVERTISE_PEER_URLS
ETCD_ADVERTISE_CLIENT_URLS

打包拷贝到新的etcd机器

# tar -czvf /etc/etcd/generated_certs/${CN}.tgz -C ${PREFIX} .
# scp /etc/etcd/generated_certs/${CN}.tgz ${CN}:/tmp/
  • 新的etcd的机器上操作

停进程

# mkdir -p /etc/origin/node/pods-stopped
# mv /etc/origin/node/pods/* /etc/origin/node/pods-stopped/
  • 删除现有数据
# rm -Rf /etc/etcd/*
# rm -Rf /var/lib/etcd/*
# tar xzvf /tmp/etcd0.example.com.tgz -C /etc/etcd/

# chown -R etcd.etcd /etc/etcd/*
# chown -R etcd.etcd /var/lib/etcd/

检查一下这些数据的时间点

  • 启动新的etcd
# cp /etc/origin/node/pods-stopped/etcd.yaml  /etc/origin/node/pods/

通过master-logs观察数据

/usr/local/bin/master-logs etcd etcd -f

在/var/lib/etcd下会同步一份新的数据

无误后检查

相同步骤添加另一个Server.

etcd数据恢复

如果是原来就有3个Etcd Server,可以先用snapshot.db恢复第一台,然后基于member add添加另外一台,启动另外那台就可,

不需要配置证书等步骤。

OpenShift环境中手工模式添加etcd server的更多相关文章

  1. JBoss Data Grid 7.2 在OpenShift环境中的Quick Start

    为了在容器环境中运行,首先需要弄清楚的是在传统环境下如何运行,所以我们从传统环境开始. 先去http://access.redhat.com下载相应介质,主要是 jboss-datagrid-7.2. ...

  2. 如何利用phpize在生产环境中为php添加新的扩展php-bcmath

    在日常的开发当中,随着开发的功能越来越复杂.对运行环境的要求也就随着需求的变化需要不断地更新和变化.一个在线的生产系统不可能一开始就满足了所有的运行依赖,因此动态地添加依赖就显得比较必要了.如果你的应 ...

  3. 在 SharePoint Server 2016 本地环境中设置 OneDrive for Business

    建议补丁 建议在sharepoint2016打上KB3127940补丁,补丁下载地址 https://support.microsoft.com/zh-cn/kb/3127940 当然不打,也可以用O ...

  4. 在集群环境中使用 EhCache 缓存系统|RMI 集群模式

    RMI 是 Java 的一种远程方法调用技术,是一种点对点的基于 Java 对象的通讯方式.EhCache 从 1.2 版本开始就支持 RMI 方式的缓存集群.在集群环境中 EhCache 所有缓存对 ...

  5. 【原】Storm Local模式和生产环境中Topology运行配置

    Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...

  6. 在 WebSphere Application Server V7 集群环境中管理 HTTP session[阅读]

    http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1012_dingsj_wascluster/1012_ding ...

  7. mac 添加环境变量(jmeter添加至环境变量中)

    Mac系统的环境变量,加载顺序为:a. /etc/profileb. /etc/pathsc. ~/.bash_profiled. ~/.bash_logine. ~/.profilef. ~/.ba ...

  8. 在离线环境中发布.NET Core至Windows Server 2008

    在离线环境中发布.NET Core至Windows Server 2008 0x00 写在开始 之前一篇博客中写了在离线环境中使用.NET Core,之后一边学习一边写了一些页面作为测试,现在打算发布 ...

  9. 把浏览器的私有模式添加到VS中

    题记:在用VS进行Web开发的时候,常常希望VS的调试不会对浏览器造成固定的影响,那么使用浏览器的私有模式来启动就很有必要. 前几天SCOTT HANSELMAN分享了一个开发Web应用程序的小技巧, ...

随机推荐

  1. Python +appium logger

    封装日志模块 import logging def get_log(): # 配置日志参数 logger = logging.getLogger() logger.setLevel(logging.I ...

  2. 小程序~WeUI下载使用

    [1]简介 因为小程序的api描述都比较简单,并没有wxml及wxss的描述,一定会想小程序有没有一个UI库,类似于前端中的Bootstrap,MD,Semantic UI这样的框架UI库.有的,它就 ...

  3. QPS、TPS、PV、UV、IP

    QPS TPS PV UV IP GMV RPS QPS.TPS.PV.UV.GMV.IP.RPS等各种名词,外行看起来很牛X,实际上每个程序员都是必懂知识点.下面我来一一解释一下. QPS Quer ...

  4. 使用Simian进行重复代码检测

    一.概述 Simian是一个可跨平台使用的重复代码检测工具,有商用和免费两种使用渠道,官方网址为:http://www.harukizaemon.com/simian/installation.htm ...

  5. LeetCode 947. Most Stones Removed with Same Row or Column

    原题链接在这里:https://leetcode.com/problems/most-stones-removed-with-same-row-or-column/ 题目: On a 2D plane ...

  6. 实训作业5(lang、util)

    实验内容和原理: 1.将布尔型.整型.长整型.双精度型作为参数,实例化相应的包装类对象,并输出对象的数值. package 包装; public class integer { public stat ...

  7. kafka 创建消费者报错

    kafka-console-consumer.sh --zookeeper master:2181,slave1:2181,slave2:2181 --topic test --from-beginn ...

  8. git dev分支合并线上master

    1.本地dev新建/切换本地master 新建 git checkout -b master 切换 git checkout  master 2.本地dev与本地master合并 git merge ...

  9. git下载指定分支到本地

    从网上查了很多方法有很多种,自我感觉下面这种更方便 git clone xxx.git --branch 分支名/dev/...

  10. [JLOI 2015]骗我呢

    传送门 Description 求给\(n*m\)的矩阵填数的方案数 满足: \[ 1\leq x_{i,j}\leq m \] \[ x_{i,j}<x_{i,j+1} \] \[ x_{i, ...