基于动态发现的ETCD集群的节点迁移

基于docker-compose编排了一组etcd集群,如果想把其中一个节点替换掉应该怎么操作呢,网上有一些质量非常高的技术文章,但是有一些细节地方没有说清楚。

先把我的docker-compose.yml帖上来。

version: '3'
services:
  etcd1:
    image: "quay.io/coreos/etcd:latest"
    network_mode: "host"
    volumes:
      - /data0/etcd/etcd1/:/etcd_data/:rw
    command:
      - etcd
      - --name
      - etcd1
      - --data-dir
      - /etcd_data
      - --listen-peer-urls
      - http://${DOCKER_IIP}:2380
      - --listen-client-urls
      - http://${DOCKER_IIP}:2379,http://127.0.0.1:2379
      - --advertise-client-urls
      - http://${DOCKER_IIP}:2379
      - --initial-advertise-peer-urls
      - http://${DOCKER_IIP}:2380
      - --discovery
      - http://discovery.etcd.io/TTTTTTTTTTTTTTTTTTTTTTT

下面来进行替换节点的操作,先查看一下节点列表

/ # etcdctl member list
1ca4fc0d4b2c9fa2: name=etcd1 peerURLs=http://192.168.56.42:2380 clientURLs=http://192.168.56.42:2379 isLeader=true
4cf04322e0117c69: name=etcd4 peerURLs=http://192.168.56.33:2380 clientURLs=http://192.168.56.33:2379 isLeader=false
6dc5120e6c9ba574: name=etcd3 peerURLs=http://192.168.56.42:2382 clientURLs=http://192.168.56.42:2381 isLeader=false

先拿掉etcd4。

/ # etcdctl member remove 4cf04322e0117c69
Removed member 4cf04322e0117c69 from cluster

再进行添加操作。

/ # etcdctl member add etcd2 http://192.168.56.33:2380
Added member named etcd2 with ID d401a8b3607279fc to cluster

ETCD_NAME="etcd2"
ETCD_INITIAL_CLUSTER="etcd1=http://192.168.56.42:2380,etcd3=http://192.168.56.42:2382,etcd2=http://192.168.56.33:2380"
ETCD_INITIAL_CLUSTER_STATE="existing"

接下来是重点了,把这几个环境变量记录一下,修改一下原来的docker-compose.yml,进行新节点启动。

version: '3'
services:
  etcd2:
    image: "quay.io/coreos/etcd:latest"
    network_mode: "host"
    volumes:
      - /data0/etcd/etcd2/:/etcd_data/:rw
    command:
      - etcd
      - --name
      - etcd2
      - --data-dir
      - /etcd_data
      - --listen-peer-urls
      - http://${DOCKER_IIP}:2380
      - --listen-client-urls
      - http://${DOCKER_IIP}:2379,http://127.0.0.1:2379
      - --advertise-client-urls
      - http://${DOCKER_IIP}:2379
      - --initial-advertise-peer-urls
      - http://${DOCKER_IIP}:2380
      #- --discovery
      #- http://discovery.etcd.io/df65ece6e8eef0db7548c7a51adb894e
      - --initial-cluster-state
      - existing
      - --initial-cluster
      - etcd1=http://192.168.56.42:2380,etcd2=http://192.168.56.33:2380,etcd3=http://192.168.56.42:2382

将原来的–discovery临时注释,添加下面几行,然后进行节点启动,节点启动成功之后,把上面这一次临时修改还原就可以。

nginx开发参数调整

无论是看过的nginx有关书还是网上看到的有关nginx 配置说明的文章(http://wiki.nginx.org/EventsModule#worker_connections),无一例外,在讲到 worker_connections 和 max_clients这两个概念的关系时都一致的一笔带过,尤其是在讲到nginx作为反向代理时max_clients的计算时,都是想当然的贴出max_clients = worker_processes * worker_connections/4这个理论计算公式来。既然是理论公式,那么为什么要除以4呢?肯定是有原因的吧。我相信有些人是知道如何计算的,但是很多人都如我一样一眼扫过,真正等到别人或者自己问自己的时候就真的感觉是云里雾里,不知所以然了。
继续阅读nginx开发参数调整

Mysql5.7 设置utf8mb4字符

参数说明。
character-set-client-handshake
用来控制客户端声明使用字符集和服务端声明使用的字符集在不一致的情况下的兼容性,默认为 true。

character-set-client-handshake = false

# 设置为 False, 在客户端字符集和服务端字符集不同的时候将拒绝连接到服务端执行任何操作

character-set-client-handshake = true

# 设置为 True, 即使客户端字符集和服务端字符集不同, 也允许客户端连接

character-set-server
声明服务端的字符编码, 推荐使用utf8mb4 , 该字符虽然占用空间会比较大, 但是可以兼容 emoji 😈 表情的存储
继续阅读Mysql5.7 设置utf8mb4字符

使用docker镜像一行命令签发/续期免费ssl

letsencrypt 免费的ssl证书现在已经比较流行了,今天来使用docker环境一行命令签发/续期证书。
他自己的有多种方式验证服务器的合法性,也就是证明这台服务器是你的,你拥有他的操作权限。今天使用webroot的方式来验证,这个方式有一个好处就是不影响现有的服务器运行。
他的机制其实就是命令录入一个webroot,自动验证程序会在这个目录写入一个临时的文件,然后这个程序会从互联网外网通过你键入的域名来访问这个文件,比如[http://gbk.pw/.well-known/acme-challenge/BY91IegFTEq8MtM8nAGEwOvY2TSos_tM7E2fAOeGgF0:]。如果通过域名能访问到,也就代表着你有这台服务器有写入权限。当然这只是他的原理,使用起来可以不必关心这些。

继续阅读使用docker镜像一行命令签发/续期免费ssl

elk升级版-ek+beats套件安装

ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。

  • Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
  • Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
  • Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
  • 对于上面的elk套件,Logstash是可选的。现在官方在主要推行beats系统收集日志的组件 ,这些组件是基于go的,所以不需要java环境更加精简一些。这次就只安装ek环境,不再安装Logstash,对于数据的采集来源用beats套件,直接采集到ElasticSearch里面。
    继续阅读elk升级版-ek+beats套件安装