暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

codis3.2 安装配置

数据库这点小事 2019-11-14
708

codis是一个分布式redis集群架构,在数据量和并发量都很大的业务场景,我们在使用单点redis的时候,往往会受到内存和cpu的限制,这个时候引入codis的集群架构,可以满足大数据量和高并发的业务场景。

github地址:https://github.com/CodisLabs/codis

Codis 3.2 组件组成:

Codis Server:数据节点,每个server相当于一个redis

Zookeeper : 存放数据路由表和codis-proxy节点的元信息

Codis Proxy:客户端连接的 Redis 代理服务, 实现了 Redis 协议.除部分命令不支持以外,表现的和原生的 Redis 没有区别。

  • 对于同一个业务集群而言,可以同时部署多个 codis-proxy 实例;

  • 不同 codis-proxy 之间由 codis-dashboard 保证状态同步。

Codis Dashboard:集群管理工具,支持 codis-proxy、codis-server 的添加、删除,以及数据迁移等操作。在集群状态发生改变时,codis-dashboard 维护集群下所有 codis-proxy 的状态的一致性。

  • 对于同一个业务集群而言,同一个时刻 codis-dashboard 只能有 0个或者1个;

  • 所有对集群的修改都必须通过 codis-dashboard 完成。

Codis Admin:集群管理的命令行工具。

  • 可用于控制 codis-proxy、codis-dashboard 状态以及访问外部存储。

Codis FE:集群管理界面。

  • 多个集群实例共享可以共享同一个前端展示页面;

  • 通过配置文件管理后端 codis-dashboard 列表,配置文件可自动更新。

Storage:为集群状态提供外部存储。

  • 提供 Namespace 概念,不同集群的会按照不同 product name 进行组织;

  • 目前仅提供了 Zookeeper、Etcd、Fs 三种实现,但是提供了抽象的 interface 可自行扩展。

Redis Sentinel:哨兵进程,监控codis每组server的主从状态,在主出现故障时,从自动切换成主(不是瞬切,需要一定的时间)

架构规划:

操作系统:centos 7.5

服务器规划

    172.19.14.21     codis-proxy1(zk-1,proxy1,sentinel)
    172.19.14.22 codis-proxy2(zk-2,proxy2,sentinel)
    172.19.14.23 codis-proxy3(zk-3,proxy3,sentinel,dashboard,fe)
    172.19.14.26 codis-server1master,slave
    172.19.14.27 codis-server2master,slave
    172.19.14.28 codis-server3master,slave

    安装步骤:

    一 、配置hosts文件(所有服务器)

    vim etc/hosts

      172.19.14.21      codis-proxy1
      172.19.14.22 codis-proxy2
      172.19.14.23 codis-proxy3
      172.19.14.26 codis-server1
      172.19.14.27 codis-server2
      172.19.14.28 codis-server3

      修改network文件,根据host修改每个节点的hostname

      vim etc/sysconfig/network

        NETWORKING=yes
        HOSTNAME=codis-proxy3

        ps:使hostname立即生效

        hostname codis-proxy3

        二、安装zk(proxy节点)

        1. 下载zk安装包

          wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

          2. 安装java环境

          zk要求java6以上版本

            yum -y install java-1.8.0-openjdk-devel
            java -version
            openjdk version "1.8.0_232"
            OpenJDK Runtime Environment (build 1.8.0_232-b09)
            OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

            3. 安装zk

              tar zxvf zookeeper-3.4.14.tar.gz
              mv zookeeper-3.4.14 usr/local/
              mkdir -p appl/zookeeper/{data,logs}

              4. 修改配置文件

              [root@codis-proxy1 conf]# vim zoo.cfg

                tickTime=2000
                initLimit=5
                syncLimit=2
                dataDir=/var/zookeeper/data
                dataLogDir=/appl/zookeeper/logs
                clientPort=2181
                server.1=codis-proxy1:2888:3888
                server.2=codis-proxy2:2888:3888
                server.3=codis-proxy3:2888:3888

                5. 配置myid

                在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字

                  [root@codis-proxy1 ~]# echo 1 > appl/zookeeper/data/myid
                  [root@codis-proxy2 ~]# echo 2 > /appl/zookeeper/data/myid
                  [root@codis-proxy3 ~]# echo 3 > /appl/zookeeper/data/myid

                  6. 启动zookeeper

                  启动顺序zookeeper-1>zookeeper-2>zookeeper-3

                    [root@codis-proxy1]# usr/local/zookeeper/bin/zkServer.sh start
                    JMX enabled by default
                    Using config: usr/local/zookeeper/bin/../conf/zoo.cfg
                    Starting zookeeper ... STARTED
                    [root@codis-proxy1]# usr/local/zookeeper/bin/zkServer.sh status
                    JMX enabled by default
                    Using config: usr/local/zookeeper/bin/../conf/zoo.cfg
                    Mode: leader

                    启动完查看各节点zk状态,可以看到是1主2从结构 ( leader follower observer)

                    三、安装codis(codis_server和proxy机器上)

                    1. 安装go

                    下载go安装包

                      wget https://studygolang.com/dl/go1.13.3.linux-amd64.tar.gz

                      解压,移动到指定目录

                        tar -zxvf go1.13.3.linux-amd64.tar.gz
                        mv go usr/local/

                        修改环境变量

                        vim ~/.bash_profile

                          export GOROOT=/usr/local/go
                          export CODISPATH=/usr/local/codis
                          export GOPATH=/usr/local/codis
                          export PATH=$PATH:$GOROOT/bin:$CODISPATH/bin:$GOPATH/bin

                          source ~/.bash_profile #使环境变量生效

                          查看go环境是否安装成功

                            [root@localhost software]# go version
                            go version go1.13.3 linux/amd64

                            下载go语言开发包

                              go get github.com/tools/godep

                              此时的godep程序保存路径为: $GOPATH/src/github.com/tools/godep

                              将godep程序保存在"$GOPATH/bin",利用go语言的命令实现

                                cd $GOPATH/src/github.com/tools/godep
                                go install ./

                                此时在$GOPATH/bin目录之中,会自动出现一个"godep"程序文件,证明go完成

                                 

                                2. 人工配置codis开发包

                                下载地址:https://github.com/CodisLabs/codis

                                上传codis-release3.2.zip到服务器,将包解压到$GOPATH/src/github.com/CodisLabs目录下

                                  unzip codis-release3.2.zip -d $GOPATH/src/github.com/CodisLabs

                                  修改目录

                                    mv codis-release3.2/ codis/

                                    进入codis源代码所在的目录,进行编译安装

                                      cd $GOPATH/src/github.com/CodisLabs/codis/
                                      make

                                        srcroot            :
                                        abs_srcroot : usr/local/codis/src/github.com/CodisLabs/codis/vendor/github.com/spinlock/jemalloc-go/jemalloc-4.4.0/
                                        objroot :
                                        abs_objroot : usr/local/codis/src/github.com/CodisLabs/codis/vendor/github.com/spinlock/jemalloc-go/jemalloc-4.4.0/
                                        JEMALLOC_PREFIX : je_
                                        JEMALLOC_PRIVATE_NAMESPACE
                                        : je_
                                        install_suffix :
                                        malloc_conf :
                                        autogen : 1
                                        cc-silence : 1
                                        debug : 0
                                        code-coverage : 0
                                        stats : 1
                                        prof : 0
                                        prof-libunwind : 0
                                        prof-libgcc : 0
                                        prof-gcc : 0
                                        tcache : 1
                                        fill : 1
                                        utrace : 0
                                        valgrind : 0
                                        xmalloc : 0
                                        munmap : 0
                                        lazy_lock : 0
                                        tls : 1
                                        cache-oblivious : 1
                                        ===============================================================================
                                        go build -i -o bin/codis-dashboard ./cmd/dashboard
                                        go build -i -tags "cgo_jemalloc" -o bin/codis-proxy ./cmd/proxy
                                        go build -i -o bin/codis-admin ./cmd/admin
                                        go build -i -o bin/codis-ha ./cmd/ha
                                        go build -i -o bin/codis-fe ./cmd/fe

                                        无报错,编译成功,为了方便管理,重新建立个目录

                                          $ mkdir -p usr/local/codis/{logs,conf,scripts}

                                          logs:保存所有的日志数据

                                          conf:保存所有的配置文件信息

                                          将所有的可执行文件拷贝到"/usr/local/codis/"文件中

                                            cp -r $GOPATH/src/github.com/CodisLabs/codis/bin /usr/local/codis

                                            3.codis-bashboard部署(codis-web节点)

                                            生成codis-dashboard配置文件

                                            [root@codis-proxy3 conf]# vim usr/local/codis/conf/dashboard.conf

                                              ##################################################
                                              # #
                                              # Codis-Dashboard #
                                              # #
                                              ##################################################
                                              # Set Coordinator, only accept "zookeeper" & "etcd" & "filesystem".
                                              # for zookeeper/etcd, coorinator_auth accept "user:password"
                                              # Quick Start
                                              coordinator_name = "zookeeper"
                                              coordinator_addr = "172.19.14.21:2181,172.19.14.22:2181,172.19.14.23:2181"
                                              #coordinator_name = "zookeeper"
                                              #coordinator_addr = "127.0.0.1:2181"
                                              #coordinator_auth = ""
                                              # Set Codis Product Name/Auth.
                                              product_name = "codis-test"
                                              product_auth = ""
                                              # Set bind address for admin(rpc), tcp only.
                                              admin_addr = "172.19.14.23:18080"
                                              # Set arguments for data migration (only accept 'sync' & 'semi-async').
                                              migration_method = "semi-async"
                                              migration_parallel_slots = 100
                                              migration_async_maxbulks = 200
                                              migration_async_maxbytes = "32mb"
                                              migration_async_numkeys = 500
                                              migration_timeout = "30s"
                                              # Set configs for redis sentinel.
                                              sentinel_client_timeout = "10s"
                                              sentinel_quorum = 2
                                              sentinel_parallel_syncs = 1
                                              sentinel_down_after = "30s"
                                              sentinel_failover_timeout = "5m"
                                              sentinel_notification_script = ""
                                              sentinel_client_reconfig_script = ""

                                              配置dashboard启动脚本

                                              vim usr/local/codis/scripts/start_dashboard.sh

                                                #!/bin/sh
                                                CODIS_HOME=/usr/local/codis
                                                #nohup usr/local/codis/bin/codis-dashboard --ncpu=2 --config=/usr/local/codis/conf/dashboard.conf --log=/usr/local/codis/logs/dashboard.log --log-level=WARN & &
                                                nohup $CODIS_HOME/bin/codis-dashboard --ncpu=2 --config=$CODIS_HOME/conf/dashboard.conf --log=$CODIS_HOME/log/dashboard.log --log-level=WARN&

                                                配置dashboard停止脚本

                                                vim usr/local/codis/scripts/start_dashboard.sh

                                                  #!/bin/sh
                                                  CODIS_HOME=/usr/local/codis
                                                  $CODIS_HOME/bin/codis-admin --dashboard=172.19.14.23:18080 --shutdown

                                                  4. 配置codis-fe(codis-web节点)

                                                  生成codis-fe配置文件

                                                  vim usr/local/codis/conf/codis.json

                                                    [
                                                    {
                                                    "name": "codis-test",
                                                    "dashboard": "172.19.14.23:18080"
                                                    }
                                                    ]

                                                    配置codis-fe启动脚本

                                                    vim usr/local/codis/scripts/start_codis-fe.sh

                                                      #!/bin/sh
                                                      CODIS_HOME=/usr/local/codis
                                                      nohup $CODIS_HOME/bin/codis-fe --ncpu=2 --log=$CODIS_HOME/log/fe.log --log-level=WARN --dashboard-list=$CODIS_HOME/conf/codis.json --listen=0.0.0.0:18090 &

                                                      5. 配置proxy(所有proxy节点)

                                                      vim usr/local/codis/conf/proxy.conf (各个proxy节点修改对应的admin_addr和proxy_addr)

                                                        ##################################################
                                                        # #
                                                        # Codis-Proxy #
                                                        # #
                                                        ##################################################
                                                        # Set Codis Product Name/Auth.
                                                        product_name = "codis-test"
                                                        product_auth = ""
                                                        # Set auth for client session
                                                        # 1. product_auth is used for auth validation among codis-dashboard,
                                                        # codis-proxy and codis-server.
                                                        # 2. session_auth is different from product_auth, it requires clients
                                                        # to issue AUTH <PASSWORD> before processing any other commands.
                                                        session_auth = ""
                                                        # Set bind address for admin(rpc), tcp only.
                                                        admin_addr = "172.19.14.21:11080"
                                                        # Set bind address for proxy, proto_type can be "tcp", "tcp4", "tcp6", "unix" or "unixpacket".
                                                        proto_type = "tcp4"
                                                        proxy_addr = "172.19.14.21:19000"
                                                        # Set jodis address & session timeout
                                                        # 1. jodis_name is short for jodis_coordinator_name, only accept "zookeeper" & "etcd".
                                                        # 2. jodis_addr is short for jodis_coordinator_addr
                                                        # 3. jodis_auth is short for jodis_coordinator_auth, for zookeeper/etcd, "user:password" is accepted.
                                                        # 4. proxy will be registered as node:
                                                        # if jodis_compatible = true (not suggested):
                                                        # zk/codis/db_{PRODUCT_NAME}/proxy-{HASHID} (compatible with Codis2.0)
                                                        # or else
                                                        # jodis/{PRODUCT_NAME}/proxy-{HASHID}
                                                        jodis_name = "zookeeper"
                                                        jodis_addr = "172.19.14.21:2181,172.19.14.22:2181,172.19.14.23:2181"
                                                        jodis_auth = ""
                                                        jodis_timeout = "20s"
                                                        jodis_compatible = false
                                                        # Set datacenter of proxy.
                                                        proxy_datacenter = ""
                                                        # Set max number of alive sessions.
                                                        proxy_max_clients = 20000
                                                        # Set max offheap memory size. (0 to disable)
                                                        proxy_max_offheap_size = "1024mb"
                                                        # Set heap placeholder to reduce GC frequency.
                                                        proxy_heap_placeholder = "256mb"
                                                        # Proxy will ping backend redis (and clear 'MASTERDOWN' state) in a predefined interval. (0 to disable)
                                                        backend_ping_period = "5s"
                                                        # Set backend recv buffer size & timeout.
                                                        backend_recv_bufsize = "128kb"
                                                        backend_recv_timeout = "30s"
                                                        # Set backend send buffer & timeout.
                                                        backend_send_bufsize = "128kb"
                                                        backend_send_timeout = "30s"
                                                        # Set backend pipeline buffer size.
                                                        backend_max_pipeline = 20480
                                                        # Set backend never read replica groups, default is false
                                                        backend_primary_only = false
                                                        # Set backend parallel connections per server
                                                        backend_primary_parallel = 1
                                                        backend_replica_parallel = 1
                                                        # Set backend tcp keepalive period. (0 to disable)
                                                        backend_keepalive_period = "75s"
                                                        # Set number of databases of backend.
                                                        backend_number_databases = 16
                                                        # If there is no request from client for a long time, the connection will be closed. (0 to disable)
                                                        # Set session recv buffer size & timeout.
                                                        session_recv_bufsize = "128kb"
                                                        session_recv_timeout = "30m"
                                                        # Set session send buffer size & timeout.
                                                        session_send_bufsize = "64kb"
                                                        session_send_timeout = "30s"
                                                        # Make sure this is higher than the max number of requests for each pipeline request, or your client may be blocked.
                                                        # Set session pipeline buffer size.
                                                        session_max_pipeline = 10000
                                                        # Set session tcp keepalive period. (0 to disable)
                                                        session_keepalive_period = "75s"
                                                        # Set session to be sensitive to failures. Default is false, instead of closing socket, proxy will send an error response to client.
                                                        session_break_on_failure = false
                                                        # Set metrics server (such as http://localhost:28000), proxy will report json formatted metrics to specified server in a predefined period.
                                                        metrics_report_server = ""
                                                        metrics_report_period = "1s"
                                                        # Set influxdb server (such as http://localhost:8086), proxy will report metrics to influxdb.
                                                        metrics_report_influxdb_server = ""
                                                        metrics_report_influxdb_period = "1s"
                                                        metrics_report_influxdb_username = ""
                                                        metrics_report_influxdb_password = ""
                                                        metrics_report_influxdb_database = ""
                                                        # Set statsd server (such as localhost:8125), proxy will report metrics to statsd.
                                                        metrics_report_statsd_server = ""
                                                        metrics_report_statsd_period = "1s"
                                                        metrics_report_statsd_prefix = ""

                                                        配置proxy启动脚本

                                                        vim usr/local/codis/scripts/start_codis-proxy.sh

                                                          #!/bin/sh
                                                          CODIS_HOME=/usr/local/codis
                                                          nohup $CODIS_HOME/bin/codis-proxy --ncpu=2 --config=$CODIS_HOME/conf/proxy.conf --log=$CODIS_HOME/log/proxy.log --log-level=WARN &

                                                          配置proxy停止脚本

                                                          vim usr/local/codis/scripts/stop_codis-proxy.sh

                                                            #!/bin/sh
                                                            CODIS_HOME=/usr/local/codis
                                                            $CODIS_HOME/bin/codis-admin --proxy=172.19.14.21:11080 --shutdown

                                                            6. 哨兵配置(所有proxy节点)

                                                            [root@codis-proxy1 conf]# vim sentinel.conf

                                                              protected-mode no
                                                              port 26379
                                                              dir "/tmp"

                                                              7. 配置codis_server(所有server节点)

                                                              修改内核参数

                                                                [root@codis-server1 conf]# echo "vm.overcommit_memory = 1" >> etc/sysctl.conf
                                                                [root@codis-server1 conf]# sysctl -p

                                                                创建server端目录

                                                                  mkdir -p var/codis_server/{run,conf,log,data}

                                                                  修改server配置文件

                                                                  vim var/codis_server/conf/6379.conf

                                                                    bind 0.0.0.0
                                                                    protected-mode no
                                                                    daemonize yes
                                                                    pidfile var/run/redis_6379.pid
                                                                    bind 0.0.0.0
                                                                    protected-mode no
                                                                    daemonize yes
                                                                    pidfile var/codis_server/run/redis_6379.pid
                                                                    port 6379
                                                                    save 900 1
                                                                    save 300 10
                                                                    save 60 10000
                                                                    tcp-backlog 511
                                                                    timeout 300
                                                                    tcp-keepalive 0
                                                                    loglevel notice
                                                                    logfile "/var/codis_server/log/redis_6379.log"
                                                                    databases 16
                                                                    stop-writes-on-bgsave-error yes
                                                                    rdbcompression yes
                                                                    rdbchecksum yes
                                                                    dbfilename 6379.rdb
                                                                    dir var/codis_server/data
                                                                    slave-serve-stale-data yes
                                                                    slave-read-only yes
                                                                    repl-disable-tcp-nodelay no
                                                                    slave-priority 100
                                                                    maxclients 3000
                                                                    maxmemory 1gb
                                                                    maxmemory-policy allkeys-lru
                                                                    appendonly yes
                                                                    appendfilename "6379_appendonly.aof"
                                                                    appendfsync everysec
                                                                    no-appendfsync-on-rewrite no
                                                                    auto-aof-rewrite-percentage 100
                                                                    auto-aof-rewrite-min-size 64mb
                                                                    lua-time-limit 5000
                                                                    slowlog-log-slower-than 10000
                                                                    slowlog-max-len 128
                                                                    latency-monitor-threshold 0
                                                                    notify-keyspace-events ""
                                                                    hash-max-ziplist-entries 512
                                                                    hash-max-ziplist-value 64
                                                                    list-max-ziplist-entries 512
                                                                    list-max-ziplist-value 64
                                                                    set-max-intset-entries 512
                                                                    zset-max-ziplist-entries 128
                                                                    zset-max-ziplist-value 64
                                                                    hll-sparse-max-bytes 3000
                                                                    activerehashing yes
                                                                    client-output-buffer-limit normal 0 0 0

                                                                    vim var/codis_server/conf/6380.conf

                                                                      bind 0.0.0.0
                                                                      protected-mode no
                                                                      daemonize yes
                                                                      pidfile var/run/redis_6380.pid
                                                                      bind 0.0.0.0
                                                                      protected-mode no
                                                                      daemonize yes
                                                                      pidfile var/codis_server/run/redis_6380.pid
                                                                      port 6380
                                                                      save 900 1
                                                                      save 300 10
                                                                      save 60 10000
                                                                      tcp-backlog 511
                                                                      timeout 300
                                                                      tcp-keepalive 0
                                                                      loglevel notice
                                                                      logfile "/var/codis_server/log/redis_6380.log"
                                                                      databases 16
                                                                      stop-writes-on-bgsave-error yes
                                                                      rdbcompression yes
                                                                      rdbchecksum yes
                                                                      dbfilename 6380.rdb
                                                                      dir var/codis_server/data
                                                                      slave-serve-stale-data yes
                                                                      slave-read-only yes
                                                                      repl-disable-tcp-nodelay no
                                                                      slave-priority 100
                                                                      maxclients 3000
                                                                      maxmemory 1gb
                                                                      maxmemory-policy allkeys-lru
                                                                      appendonly yes
                                                                      appendfilename "6380_appendonly.aof"
                                                                      appendfsync everysec
                                                                      no-appendfsync-on-rewrite no
                                                                      auto-aof-rewrite-percentage 100
                                                                      auto-aof-rewrite-min-size 64mb
                                                                      lua-time-limit 5000
                                                                      slowlog-log-slower-than 10000
                                                                      slowlog-max-len 128
                                                                      latency-monitor-threshold 0
                                                                      notify-keyspace-events ""
                                                                      hash-max-ziplist-entries 512
                                                                      hash-max-ziplist-value 64
                                                                      list-max-ziplist-entries 512
                                                                      list-max-ziplist-value 64
                                                                      set-max-intset-entries 512
                                                                      zset-max-ziplist-entries 128
                                                                      zset-max-ziplist-value 64
                                                                      hll-sparse-max-bytes 3000
                                                                      activerehashing yes
                                                                      client-output-buffer-limit normal 0 0 0

                                                                      安装过程问题记录

                                                                      zk部分:

                                                                        [root@mysql-master-21 data]# usr/local/zookeeper-3.4.14/bin/zkServer.sh status
                                                                        ZooKeeper JMX enabled by default
                                                                        Using config: usr/local/zookeeper-3.4.14/bin/../conf/zoo.cfg
                                                                        Error contacting service. It is probably not running.

                                                                        问题处理:查看zk日志

                                                                          2019-11-01 10:57:46,995 [myid:1] - WARN  [QuorumPeer[myid=1]/0.0.0.0:2181:QuorumCnxManager@584] - Cannot open channel to 3 at election address codis-proxy1/172.19.14.21:3888
                                                                          java.net.ConnectException: Connection refused (Connection refused)
                                                                          at java.net.PlainSocketImpl.socketConnect(Native Method)
                                                                          at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
                                                                          at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
                                                                          at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
                                                                          at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
                                                                          at java.net.Socket.connect(Socket.java:607)
                                                                          at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:558)
                                                                          at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:610)
                                                                          at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:838)
                                                                          at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:958)
                                                                          2019-11-01 10:57:46,995 [myid:1] - INFO [QuorumPeer[myid=1]/0.0.0.0:2181:QuorumPeer$QuorumServer@185] - Resolved hostname: codis-proxy1 to address: codis-proxy1/172.19.14.21

                                                                          查看配置文件,配置文件中sever和主机对应顺序出错,修改后解决报错

                                                                            tickTime=2000
                                                                            initLimit=5
                                                                            syncLimit=2
                                                                            dataDir=/var/zookeeper/data
                                                                            #dataLogDir=/appl/zookeeper/logs
                                                                            clientPort=2181
                                                                            server.1=codis-proxy3:2888:3888
                                                                            server.2=codis-proxy2:2888:3888
                                                                            server.3=codis-proxy1:2888:3888

                                                                            codis编译报错:

                                                                            报错

                                                                              Hint: It's a good idea to run 'make test' ;)
                                                                              make[2]: Leaving directory `/usr/local/codis/src/github.com/CodisLabs/codis-release3.2/extern/redis-3.2.11/src'
                                                                              make[1]: Leaving directory `/usr/local/codis/src/github.com/CodisLabs/codis-release3.2/extern/redis-3.2.11'
                                                                              fatal: Not a git repository (or any of the parent directories): .git
                                                                              autoconf
                                                                              ./autogen.sh: line 5: autoconf: command not found
                                                                              Error 0 in autoconf
                                                                              make[2]: *** [config] Error 1
                                                                              make[1]: *** [build] Error 2
                                                                              make: *** [codis-deps] Error 2

                                                                              解决:

                                                                              安装依赖 

                                                                                yum install autoconf automake libtool -y






                                                                                解压go安装包报错

                                                                                  [root@localhost software]# tar -zxvf go1.13.3.linux-amd64.tar.gz
                                                                                  gzip: stdin: not in gzip format
                                                                                  tar: Child returned status 1
                                                                                  tar: Error is not recoverable: exiting now



                                                                                  解决:
                                                                                  根据提示,这个包没有用gzip压缩,省略z指令,报错并没有变

                                                                                    [root@localhost software]# tar -xvf go1.13.3.linux-amd64.tar.gz
                                                                                    gzip: stdin: not in gzip format
                                                                                    tar: Child returned status 1
                                                                                    tar: Error is not recoverable: exiting now


                                                                                    网上搜了下原因,大概原来是wget下来的tar省略了一些同意协议,所以安装包介质本身有点问题,手动下载好安装包后上传到服务器在解压果然解决了这个问题。



                                                                                    某节点通过go下载godep报错

                                                                                    报错1:

                                                                                      [root@localhost tools]# go get github.com/tools/godep
                                                                                      # cd .; git clone -- https://github.com/CodisLabs/codis /usr/local/codis/src/github.com/CodisLabs/codis
                                                                                      error: RPC failed; result=56, HTTP code = 200
                                                                                      fatal: The remote end hung up unexpectedly
                                                                                      fatal: early EOF
                                                                                      fatal: index-pack failed
                                                                                      package github.com/CodisLabs/codis: exit status 128



                                                                                      解决:

                                                                                      找了下资料发现是curl的postBuffer 默认值较小的原因,配置下个这个值,就不会出现该错误了

                                                                                        git config --global http.postBuffer 24288000000


                                                                                        然鹅现实是残酷的

                                                                                          [root@localhost tools]# go get github.com/tools/godep
                                                                                          # cd .; git clone -- https://github.com/CodisLabs/codis /usr/local/codis/src/github.com/CodisLabs/codis
                                                                                          fatal: Out of memory, malloc failed (tried to allocate 18446744072227747840 bytes)
                                                                                          package github.com/CodisLabs/codis: exit status 128


                                                                                          最终 yum install gcc 安装了gcc环境居然好了,当然也可以直接下载源码包 

                                                                                           地址https://github.com/tools/godep

                                                                                            unzip /var/software/godep-master.zip -d $GOPATH/src/github.com/tools/
                                                                                            cd $GOPATH/src/github.com/tools/
                                                                                            mv godep-master godep




                                                                                            报错2:

                                                                                              [root@localhost software]# go get github.com/tools/godep
                                                                                              go: missing Git command. See https://golang.org/s/gogetcmd
                                                                                              package github.com/tools/godep: exec: "git": executable file not found in $PATH:


                                                                                              解决:

                                                                                              缺少git环境 

                                                                                                yum -y install git



                                                                                                启动CODIS正常流程:

                                                                                                1.在zookeeper所有节点启动zookeeper服务

                                                                                                  /usr/local/zookeeper-3.4.14/bin/zkCli.sh start


                                                                                                  2.在codis-web启动codis-dashboard服务。

                                                                                                    cd /usr/local/codis/scripts/
                                                                                                    sh start_dashboard.sh


                                                                                                    3.在codis-web启动codis-fe服务。

                                                                                                      cd /usr/local/codis/scripts/
                                                                                                      sh start_codis-fe.sh


                                                                                                      4.在codis-proxy所有节点启动codis-proxy服务

                                                                                                        cd /usr/local/codis/scripts/
                                                                                                        sh start_codis-proxy.sh


                                                                                                        5.在CODIS-SERVER所有节点启动codis服务

                                                                                                        启动codis-server服务

                                                                                                          /usr/local/codis/bin/codis-server /appl/codis_server/conf/6379.conf
                                                                                                          /usr/local/codis/bin/codis-server /appl/codis_server/conf/6380.conf


                                                                                                          6.在redis-sentinel所有节点启动redis-sentinel服务:

                                                                                                            /usr/local/codis/bin/redis-sentinel  /usr/local/codis/conf/sentinel.conf &



                                                                                                            通过CODIS-FE管理面板管理CODIS集群

                                                                                                            地址:172.19.14.23:18090


                                                                                                            添加proxy

                                                                                                            初始化SLOT,并分GROUP(在分group、添加CODIS后操作):



                                                                                                            新增group后,再添加CODIS:(sync为主,promote为从,点击后,搭建主从并同步)

                                                                                                            添加redis-sentinels:

                                                                                                            添加完成后点击,此时查看sentinels的配置文件,会发现集群自动把集群的主备信息写入了配置文件中

                                                                                                            [root@codis-proxy2 conf]# cat sentinel.conf

                                                                                                              protected-mode no
                                                                                                              port 26379
                                                                                                              dir "/tmp"
                                                                                                              # Generated by CONFIG REWRITE
                                                                                                              sentinel myid b0612a76f5dd8000e7fe98609eb45dc90c925003
                                                                                                              sentinel monitor codis-test-2 172.19.14.27 6379 2
                                                                                                              sentinel failover-timeout codis-test-2 300000
                                                                                                              sentinel config-epoch codis-test-2 0
                                                                                                              sentinel leader-epoch codis-test-2 0
                                                                                                              sentinel known-slave codis-test-2 172.19.14.28 6380
                                                                                                              sentinel known-sentinel codis-test-2 172.19.14.23 26379 3019d72df0590fa5e3654ed120dad46ff97c6b2d
                                                                                                              sentinel known-sentinel codis-test-2 172.19.14.21 26379 b5c733221c83d95fe9dde5f75ecc166486b906a0
                                                                                                              sentinel monitor codis-test-1 172.19.14.26 6379 2
                                                                                                              sentinel failover-timeout codis-test-1 300000
                                                                                                              sentinel config-epoch codis-test-1 0
                                                                                                              sentinel leader-epoch codis-test-1 0
                                                                                                              sentinel known-slave codis-test-1 172.19.14.27 6380
                                                                                                              sentinel known-sentinel codis-test-1 172.19.14.23 26379 3019d72df0590fa5e3654ed120dad46ff97c6b2d
                                                                                                              sentinel known-sentinel codis-test-1 172.19.14.21 26379 b5c733221c83d95fe9dde5f75ecc166486b906a0
                                                                                                              sentinel monitor codis-test-3 172.19.14.28 6379 2
                                                                                                              sentinel failover-timeout codis-test-3 300000
                                                                                                              sentinel config-epoch codis-test-3 0
                                                                                                              sentinel leader-epoch codis-test-3 0
                                                                                                              sentinel known-slave codis-test-3 172.19.14.26 6380
                                                                                                              sentinel known-sentinel codis-test-3 172.19.14.23 26379 3019d72df0590fa5e3654ed120dad46ff97c6b2d
                                                                                                              sentinel known-sentinel codis-test-3 172.19.14.21 26379 b5c733221c83d95fe9dde5f75ecc166486b906a0
                                                                                                              sentinel current-epoch 1



                                                                                                              至此,整个集群的搭建配置工作完成,因为后续采用了硬件设备实现的proxy的高可用,并没有在此使用keepalived_lvs。


                                                                                                              文章转载自数据库这点小事,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                                                                              评论