博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker集群存储软件etcd安装
阅读量:6912 次
发布时间:2019-06-27

本文共 7657 字,大约阅读时间需要 25 分钟。

Etcd是coreos开发的一个kv的软件,我使用他做存储数据,比如持久化固定ip,就是把固定的docker容器ip信息存放到etcd里,智能配置docker防火墙的信息也是存放到etcd里,这个软件很小型,并且支持集群,很是方便,现在给大家介绍一下如何在centos6系统里安装此软件。

先简单介绍一下etcd,从网上复制的

etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd的特性如下:简单: curl可访问的用户的API(HTTP+JSON)安全: 可选的SSL客户端证书认证快速: 单实例每秒 1000 次写操作可靠: 使用Raft保证一致性

安装环境

系统:centos6.6

etcd版本0.4.6

虽然有最新的版本,但我一直使用这个版本,比较稳定

下面是安装过程

1、下载

curl -L  https://github.com/coreos/etcd/releases/download/v0.4.6/etcd-v0.4.6-linux-amd64.tar.gz -o etcd-v0.4.6-linux-amd64.tar.gz

2、解压

tar xzvf etcd-v0.4.6-linux-amd64.tar.gzcd etcd-v0.4.6-linux-amd64

3、复制程序到系统环境

cp etcd /usr/local/bincp etcdctl /usr/local/bin

4、设置运行脚本,绝对路径是/etc/init.d/etcd

#!/bin/bash# Copyright 2013, Nathan Milford## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at##     http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.## /etc/init.d/etcd## Startup script for etcd## chkconfig: 2345 20 80# description: Starts and stops etcd. /etc/init.d/functionsprog="etcd"prog_bin="/usr/local/bin/$prog"desc="etcd shared configuration and service discovery daemon"if ! [ -f $prog_bin ]; then  echo "$prog binary not found."  exit 5fiif [ -f /etc/sysconfig/$prog ]; then  . /etc/sysconfig/$progelse  echo "No sysconfig file found in /etc/sysconfig/$prog... exiting."  exit 5fistart() {  echo "Starting $desc ($prog): "  su $ETCD_USER -c "nohup $prog_bin $ETCD_OPTS >>$ETCD_OUT_FILE 2>&1 &"  RETVAL=$?  return $RETVAL}stop() {  echo "Shutting down $desc ($prog): "  pkill -f $prog_bin}restart() {    stop    start}status() {  if [ -z $pid ]; then     pid=$(pgrep -f $prog_bin)  fi  if [ -z $pid ]; then    echo "$prog is NOT running."    return 1  else    echo "$prog is running (pid is $pid)."  fi}case "$1" in  start)   start;;  stop)    stop;;  restart) restart;;  status)  status;;  *)       echo "Usage: $0 {start|stop|restart|status}"           RETVAL=2;;esacexit $RETVAL

5、设置etcd软件环境配置,根据自己的实际环境修改

09:21:19 # cat /etc/sysconfig/etcd#!/bin/bash# Copyright 2014, Nathan Milford## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at##     http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.lib_dir='/var/lib/etcd/'# Will be used to populate IP address values below.  Setting some items to# '0.0.0.0' is not compatable with the discovery API.#_MY_IPADDR=$(/sbin/ifconfig | grep 'inet'| grep -Ev '(127|117|172|::1|fe)' |awk '{print $2}'|head -n 1)_MY_IPADDR=10.10.29.236# Daemon User#ETCD_USER="etcd"# Cluster Seeds#  You can specify a list here sepearated by commas, or leave it blank if#  you're playing with a single node.ETCD_SEEDS=""# Discovery Endpoint#  Leave it as the public URL unless you are running your own.ETCD_DISCOVER_ENDPOINT="https://discovery.etcd.io/"# Discovery Token#  If you are using the discovery protocol you can grab your cluster token#  from https://discovery.etcd.io/new if you are not hosting it yourself.ETCD_DISCOVERY_TOKEN="cb5940a807d44287e05f29f3170883e3"# This node's name as it represents itself on the cluster.ETCD_NODE_NAME=$(hostname -s)# Hostname and port for the etcd server to work on.ETCD_LISTEN="$_MY_IPADDR:4001"# Directory to store log and snapshot.ETCD_DATA_DIR="/var/lib/etcd/"# File to log stdout/stderr to.ETCD_OUT_FILE="/var/log/etcd/etcd.log"# Set logging vebosity for the file above.#   Valid options are "", "v" or "vv"ETCD_LOGGING=""# Max size of the cluster.ETCD_MAXSIZE=9# Max size of result buffer.ETCD_MAXRESULT=1024# Number of retries to attempt while joining a clusterETCD_RETRIES=3# Set security settings for the etcd server.#  Leave blank if you do not plan to use this feature, otherwise add appropriate#  paths.ETCD_CAFILE=""ETCD_CERT=""ETCD_KEY=""# Toggles snapshotting.#  Keep blank or set to true.ETCD_SNAPSHOT=""# Hostname and port for the RAFT server to work on.RAFT_LISTEN="$_MY_IPADDR:7001"# Set security settings for the RAFT server.#  Leave blank if you do not plan to use this feature, otherwise add appropriate#  paths.RAFT_CAFILE=""RAFT_CERT=""RAFT_KEY=""# Below we build the opts to pass to the init script.ETCD_OPTS="-name=${ETCD_NODE_NAME} \          -addr=${ETCD_LISTEN} \          -peer-addr=${RAFT_LISTEN} \          -data-dir=${ETCD_DATA_DIR} \          -max-result-buffer=${ETCD_MAXRESULT} \          -max-cluster-size=${ETCD_MAXSIZE} \          -max-retry-attempts=${ETCD_RETRIES}"if [ x$ETCD_SEEDS != "x" ]; then  ETCD_OPTS="$ETCD_OPTS -peers=${ETCD_SEEDS}"fiif [ x$ETCD_DISCOVERY_TOKEN != "x" ]; then  ETCD_OPTS="$ETCD_OPTS -discovery=${ETCD_DISCOVER_ENDPOINT}${ETCD_DISCOVERY_TOKEN}"fiif [ "$ETCD_LOGGING" == "v" ]; then  ETCD_OPTS="$ETCD_OPTS -v"elif [ "$ETCD_LOGGING" == "vv" ]; then  ETCD_OPTS="$ETCD_OPTS -vv"fiif [ x$ETCD_SNAPSHOT != "x" ]; then  ETCD_OPTS="$ETCD_OPTS -snapshot"fiif [ ! -d $lib_dir ];then  mkdir -p $lib_dirfi#if [ x$ETCD_CAFILE != "x" ] && [ x$ETCD_CERT != "x" ] && [ x$ETCD_KEY != "x" ]; then#  ETCD_OPTS="$ETCD_OPTS -ca-file=${ETCD_CAFILE} -cert-file=${ETCD_CERT} -key-file=${ETCD_KEY}"#fi#if [ x$RAFT_CAFILE != "x" ] && [ x$RAFT_CERT != "x" ] && [ x$RAFT_KEY != "x" ]; then#  ETCD_OPTS="$ETCD_OPTS -peer-ca-file=${RAFT_CAFILE} -peer-cert-file=${RAFT_CERT} -peer-key-file=${RAFT_KEY}"#fi#echo $ETCD_OPTS# TODO# Add support for:#  -peers-file#  -config#  -cors#  -cpuprofile

如果不想加入集群,就把ETCD_DISCOVER_ENDPOINT与ETCD_DISCOVERY_TOKEN给注释了,另外_MY_IPADDR是本机的ip

6、创建用户

useradd etcd -M -s /sbin/nologin

7、创建日志与数据存放目录

mkdir /var/log/etcdmkdir /var/lib/etcd

8、授予权限

chown -R etcd:etcd /var/log/etcdchown -R etcd:etcd /var/lib/etcd

9、启动

/etcd/init.d/etcd start

10、设置开机启动

chkconfig --level 345 etcd on

11、查看运行情况

查看集群主机ip

12:22:48 # curl -L http://127.0.0.1:4001/v2/machineshttp://10.10.21.199:4001, http://10.10.27.221:4001, http://10.10.17.3:4001, http://10.10.17.4:4001, http://10.10.29.236:4001

查看集群主机列表(详细)

12:23:07 # curl -L http://127.0.0.1:4001/v2/keys/_etcd/machines{"action":"get","node":{"key":"/_etcd/machines","dir":true,"nodes":[{"key":"/_etcd/machines/docker-test1","value":"etcd=http%3A%2F%2F10.10.21.199%3A4001\u0026raft=http%3A%2F%2F10.10.21.199%3A7001","modifiedIndex":1,"createdIndex":1},{"key":"/_etcd/machines/docker-test2","value":"etcd=http%3A%2F%2F10.10.27.221%3A4001\u0026raft=http%3A%2F%2F10.10.27.221%3A7001","modifiedIndex":9,"createdIndex":9},{"key":"/_etcd/machines/docker-test3","value":"etcd=http%3A%2F%2F10.10.17.3%3A4001\u0026raft=http%3A%2F%2F10.10.17.3%3A7001","modifiedIndex":16,"createdIndex":16},{"key":"/_etcd/machines/ip-10-10-17-4","value":"etcd=http%3A%2F%2F10.10.17.4%3A4001\u0026raft=http%3A%2F%2F10.10.17.4%3A7001","modifiedIndex":177304,"createdIndex":177304},{"key":"/_etcd/machines/ip-10-10-29-236","value":"etcd=http%3A%2F%2F10.10.29.236%3A4001\u0026raft=http%3A%2F%2F10.10.29.236%3A7001","modifiedIndex":2101510,"createdIndex":2101510}],"modifiedIndex":1,"createdIndex":1}}

查看集群header

12:23:15 # curl -L http://127.0.0.1:4001/v2/leaderhttp://10.10.17.4:7001

详细请参考https://github.com/coreos/etcd

转载地址:http://apncl.baihongyu.com/

你可能感兴趣的文章
java.lang.OutOfMemoryError: Java heap space
查看>>
认证 (authentication) 和授权 (authorization) 的区别
查看>>
Linux查看磁盘空间大小命令
查看>>
计算机软件著作权查询网址
查看>>
一起谈.NET技术,.Net4.0 Parallel编程(四)Task 上
查看>>
自定义Status Bar的基本方法
查看>>
react动画难写?试试react版transformjs
查看>>
Chrome(12)中使用getComputedStyle获取透明度(opacity)返回字符串不同于其它浏览器...
查看>>
【汉字乱码】IE下GET形式传递汉字。
查看>>
SmartImageView
查看>>
《FineUI秘密花园》在线阅读与完整PDF版
查看>>
android 混淆相关 proguard
查看>>
net.sf.json.JSONException: There is a cycle in the hierarchy!错误解决方案
查看>>
android TDD平台插入双卡时,查看允许返回发送报告的选项,去掉勾选,不起作用...
查看>>
2013年8月第2个周结
查看>>
(转)C的代码是如何变成程序的
查看>>
Udp SocketAsyncEventArgs SocketAsyncDataHandler
查看>>
音频处理平台
查看>>
jQuery(function(){})与(function(){})(jQuery)的区别
查看>>
android widget 开发实例 : 桌面便签程序的实现具体解释和源代码 (上)
查看>>