zoukankan      html  css  js  c++  java
  • Codis3.2 安装部署

    转载请注明出处:https://www.cnblogs.com/format-ch/p/9323841.html

    一、软件下载

    1. 下载
    [root@localhost ~]# cd /home/download/
    [root@localhost download]# ll
    total 353324
    -rw-r--r--. 1 root root 132489256 Jun 28 02:24 go1.10.3.linux-amd64.tar.gz
    -rw-r--r--. 1 root root 190890122 May 30 04:58 jdk-8u171-linux-x64.tar.gz
    -rw-r--r--. 1 root root  36667596 May 30 04:58 zookeeper-3.4.12.tar.gz
    1. 解压到相应目录

      全部解压到/usr/local/目录下,Codis也会安装此目录(或解压到自己习惯的目录)

    //命令:
    tar -zxvf go1.10.3.linux-amd64.tar.gz
    
    [root@localhost download]# cd /usr/local/
    [root@localhost local]# ll
    total 1704
    drwxr-xr-x.  5 root root     160 Jun 28 03:40 go
    drwxr-xr-x.  8   10  143     255 Mar 28 20:18 jdk1.8.0_171
    drwxr-xr-x. 11 bean bean    4096 May 30 05:39 zookeeper-3.4.12

    二、修改环境变量(/etc/profile)

    修改完之后执行 source /etc/profile 使生效

    //GOROOT就是go的安装目录,codis编译的时候,会根据这个目录来找go。 
    //GOPATH就是codis的根目录,之后下载的时候会直接下载到这个目录。
    
    export GOROOT=/usr/local/go
    
    export GOPATH=/usr/local/codis
    
    JAVA_HOME=/usr/local/jdk1.8.0_171
    
    export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.12
    
    CLASS_PATH=$JAVA_HOME/lib/
    
    export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$GOROOT/bin:$GOPATH/bin
    
    export CODIS_HOME=$GOPATH/src/github.com/CodisLabs/codis

    三、zk配置

    目前部署单节点

    1. 修改配置文件:
    cd /usr/local/zookeeper-3.4.6/conf 
    cp zoo_sample.cfg zoo.cfg 
    vim zoo.cfg 

    注意在dataDir目录下,新建一个myid,写入1 dataDir目录在zoo.cfg里有配置

    //命令
    cd /usr/local/zookeeper-3.4.12/dataDir
    vim myid
    1. 启动

      bin目录下执行下名命令

    ./zkServer.sh start

    四、下载Codis源码

    1. 新建目录,必须和官网一样,不一样,要报错。
    mkdir -p $GOPATH/src/github.com/CodisLabs
    1. 进入目录下载

      Codis 源代码需要下载到$GOPATH/src/github.com/CodisLabs/codis

    [root@localhost CodisLabs]# pwd
    /usr/local/codis/src/github.com/CodisLabs
    [root@localhost CodisLabs]# git clone https://github.com/CodisLabs/codis.git -b release3.2

    五、编译Codis源码

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

    六、启动codis-dashboard

    1. 修改配置文件
    [root@localhost config]# pwd
    /usr/local/codis/src/github.com/CodisLabs/codis/config
    [root@localhost config]# vim dashboard.toml 
    • 将默认注册中心修改为zookeeper
    #coordinator_name = "filesystem"
    #coordinator_addr = "/tmp/codis"
    coordinator_name = "zookeeper"
    coordinator_addr = "127.0.0.1:2181"
    1. 启动命令

      在Codis目录下执行如下操作

    [root@localhost codis]# pwd
    /usr/local/codis/src/github.com/CodisLabs/codis
    
    [root@localhost codis]# nohup ./bin/codis-dashboard --ncpu=1 --config=config/dashboard.toml --log=log/dashboard.log --log-level=WARN &
    1. 详细说明( 摘自官方文档,详见 : GitHub )
    • 启动参数说明:
    $ ./bin/codis-dashboard -h
    Usage:
        codis-dashboard [--ncpu=N] [--config=CONF] [--log=FILE] [--log-level=LEVEL] [--host-admin=ADDR]
        codis-dashboard  --default-config
        codis-dashboard  --version
    
    Options:
        --ncpu=N                    最大使用 CPU 个数
        -c CONF, --config=CONF      指定启动配置文件
        -l FILE, --log=FILE         设置 log 输出文件
        --log-level=LEVEL           设置 log 输出等级:INFO,WARN,DEBUG,ERROR;默认INFO,推荐WARN
    默认配置文件:
    $ ./bin/codis-dashboard --default-config | tee dashboard.toml
    ##################################################
    #                                                #
    #                  Codis-Dashboard               #
    #                                                #
    ##################################################
    
    # Set Coordinator, only accept "zookeeper" & "etcd"
    coordinator_name = "zookeeper"
    coordinator_addr = "127.0.0.1:2181"
    
    # Set Codis Product {Name/Auth}.
    product_name = "codis-demo"
    product_auth = ""
    
    # Set bind address for admin(rpc), tcp only.
    admin_addr = "0.0.0.0:18080"
    参数                              说明
    coordinator_name        外部存储类型,接受 zookeeper/etcd
    coordinator_addr        外部存储地址
    product_name            集群名称,满足正则 w[w.-]*
    product_auth            集群密码,默认为空
    admin_addr              RESTful API 端口

    1. 停止命令
    ./bin/codis-admin --dashboard=192.168.30.128:18080 --shutdown
    七、启动Codis Proxy
    1. 修改配置文件
    # vim config/proxy.toml
    • 修改为zk注册中心
    jodis_name = "zookeeper"
    jodis_addr = "127.0.0.1:2181"
    jodis_auth = ""
    jodis_timeout = "20s"
    jodis_compatible = false
    1. 启动命令
    nohup ./bin/codis-proxy --ncpu=1 --config=config/proxy.toml --log=log/proxy.log --log-level=WARN &

    codis-proxy 启动后,处于 waiting 状态,监听 proxy_addr 地址,但是不会 accept 连接,添加到集群并完成集群状态的同步,才能改变状态为 online。添加的方法有以下两种:

    • 通过 codis-fe 添加:通过 Add Proxy 按钮,将 admin_addr 加入到集群中(见下方 9.3 页面配置章节);
    • 通过 codis-admin 命令行工具添加,方法如下:
    ./bin/codis-admin --dashboard=127.0.0.1:18080 --create-proxy -x 127.0.0.1:11080

    其中 127.0.0.1:18080 以及 127.0.0.1:11080 分别为 dashboard 和 proxy 的 admin_addr 地址;

    添加过程中,dashboard 会完成如下一系列动作:

    • 获取 proxy 信息,对集群 name 以及 auth 进行验证,并将其信息写入到外部存储中;
    • 同步 slots 状态;
    • 标记 proxy 状态为 online,此后 proxy 开始 accept 连接并开始提供服务;
    1. 详细说明( 摘自官方文档,详见 : GitHub )
    • 启动参数说明:
    $ ./bin/codis-proxy -h
    Usage:
        codis-proxy [--ncpu=N] [--config=CONF] [--log=FILE] [--log-level=LEVEL] [--host-admin=ADDR] [--host-proxy=ADDR] [--ulimit=NLIMIT]
        codis-proxy  --default-config
        codis-proxy  --version
    
    Options:
        --ncpu=N                    最大使用 CPU 个数
        -c CONF, --config=CONF      指定启动配置文件
        -l FILE, --log=FILE         设置 log 输出文件
        --log-level=LEVEL           设置 log 输出等级:INFO,WARN,DEBUG,ERROR;默认INFO,推荐WARN
        --ulimit=NLIMIT             检查 ulimit -n 的结果,确保运行时最大文件描述不少于 NLIMIT
    默认配置文件
    $ ./bin/codis-proxy --default-config | tee proxy.toml
    ##################################################
    #                                                #
    #                  Codis-Proxy                   #
    #                                                #
    ##################################################
    
    # Set Codis Product {Name/Auth}.
    product_name = "codis-demo"
    product_auth = ""
    
    # Set bind address for admin(rpc), tcp only.
    admin_addr = "0.0.0.0:11080"
    
    # Set bind address for proxy, proto_type can be "tcp", "tcp4", "tcp6", "unix" or "unixpacket".
    proto_type = "tcp4"
    proxy_addr = "0.0.0.0:19000"
    
    # Set jodis address & session timeout.
    jodis_addr = ""
    jodis_timeout = 10
    jodis_compatible = false
    
    # Proxy will ping-pong backend redis periodly to keep-alive
    backend_ping_period = 5
    
    # If there is no request from client for a long time, the connection will be droped. Set 0 to disable.
    session_max_timeout = 1800
    
    # Buffer size for each client connection.
    session_max_bufsize = 131072
    
    # Number of buffered requests for each client connection.
    # Make sure this is higher than the max number of requests for each pipeline request, or your client may be blocked.
    session_max_pipeline = 1024
    
    # Set period between keep alives. Set 0 to disable.
    session_keepalive_period = 60
    参数说明
    product_name 集群名称,参考 dashboard 参数说明
    product_auth 集群密码,默认为空
    admin_addr RESTful API 端口
    proto_type Redis 端口类型,接受 tcp/tcp4/tcp6/unix/unixpacket
    proxy_addr Redis 端口地址或者路径
    jodis_addr Jodis 注册 zookeeper 地址
    jodis_timeout Jodis 注册 session timeout 时间,单位 second
    jodis_compatible Jodis 注册 zookeeper 的路径
    backend_ping_period 与 codis-server 探活周期,单位 second,0 表示禁止
    session_max_timeout 与 client 连接最大读超时,单位 second,0 表示禁止
    session_max_bufsize 与 client 连接读写缓冲区大小,单位 byte
    session_max_pipeline 与 client 连接最大的 pipeline 大小
    session_keepalive_period 与 client 的 tcp keepalive 周期,仅 tcp 有效,0 表示禁止

    注:Codis3 会将 jodis 节点注册在 /jodis/{PRODUCT_NAME} 下,这点与 Codis2 不太兼容,所以为了兼容性,可以考虑将 jodis_compatible 设置成 true

    1. 停止命令
    ./bin/codis-admin --proxy=192.168.30.128:11080 --auth="" --shutdown
    1. 启动第二个Codis Proxy
    • config目录下proxy.toml配置文件复制一份为proxy19001.toml(原文件默认端口为19000)
    [root@localhost codis]# pwd
    /usr/local/codis/src/github.com/CodisLabs/codis
    [root@localhost codis]# cp config/proxy.toml config/proxy19001.toml
    • 编辑复制好的配置文件,修改RESTful API 端口与代理端口端口如下
    vim config/proxy19001.toml
    ---------------------------------
    # Set bind address for admin(rpc), tcp only.
    admin_addr = "0.0.0.0:11081"
    
    # Set bind address for proxy, proto_type can be "tcp", "tcp4", "tcp6", "unix" or "unixpacket".
    proto_type = "tcp4"
    proxy_addr = "0.0.0.0:19001"
    • 启动第二个代理
    nohup ./bin/codis-proxy --ncpu=1 --config=config/proxy19001.toml --log=log/proxy19001.log --log-level=WARN &
    • 将代理添加入集群(也可在Fe操作,见下方 9.3 页面配置章节)
    ./bin/codis-admin --dashboard=127.0.0.1:18080 --create-proxy -x 127.0.0.1:11081
    八、启动Codis Server
    1. 启动命令
    nohup ./bin/codis-server config/redis.conf &
        默认日志路径
    /tmp/redis_6379.log
    1. 停止命令
     ./bin/redis-cli shutdown
    1. 启动多个Codis Server
    • config目录下redis.conf配置文件复制3份,总共4份,做两个server各配一个从服务
    localhost:6379 localhost:7379
    localhost:6380 localhost:7380
    [root@localhost codis]# pwd
    /usr/local/codis/src/github.com/CodisLabs/codis
    [root@localhost codis]# cp config/redis.conf config/redis7379.conf
    [root@localhost codis]# cp config/redis.conf config/redis6380.conf
    [root@localhost codis]# cp config/redis.conf config/redis7380.conf
    • 修改配置文件(示例为6380,其余操作相同)
    vim config/redis6380.conf
    ------------------------------
    port 6380
    pidfile /tmp/redis_6380.pid
    logfile "/tmp/redis_6380.log"
    dbfilename dump6380.rdb
    dir /tmp/redis_6380
    • 启动
    nohup ./bin/codis-server config/redis6380.conf &
    • 依次修改其余两个配置文件并启动

    服务启动后如其余终端无法连接服务,请将相关配置文件redis.confbind 127.0.0.1改为bind 0.0.0.0,原设置只可本机访问,修改后所有IP都可访问

    九、启动Codis FE
    1. 启动命令
    nohup ./bin/codis-fe --ncpu=1 --log=log/fe.log --log-level=WARN --zookeeper=127.0.0.1:2181 --listen=0.0.0.0:8080 &

    前一个参数是zk的地址端口,后面一个是fe的地址端口

    1. 详细说明( 摘自官方文档,详见 : GitHub )
    • 启动参数说明:
    $ ./bin/codis-fe -h
    Usage:
        codis-fe [--ncpu=N] [--log=FILE] [--log-level=LEVEL] [--assets-dir=PATH] (--dashboard-list=FILE|--zookeeper=ADDR|--etcd=ADDR|--filesystem=ROOT) --listen=ADDR
        codis-fe  --version
    
    Options:
        --ncpu=N                        最大使用 CPU 个数
        -d LIST, --dashboard-list=LIST  配置文件,能够自动刷新
        -l FILE, --log=FILE             设置 log 输出文件
        --log-level=LEVEL               设置 log 输出等级:INFO,WARN,DEBUG,ERROR;默认INFO,推荐WARN
        --listen=ADDR                   HTTP 服务端口

    配置文件 codis.json 可以手动编辑,也可以通过 codis-admin 从外部存储中拉取,例如:

    $ ./bin/codis-admin --dashboard-list --zookeeper=127.0.0.1:2181 | tee codis.json
    [
        {
            "name": "codis-demo",
            "dashboard": "127.0.0.1:18080"
        },
        {
            "name": "codis-demo2",
            "dashboard": "127.0.0.1:28080"
        }
    ]
    1. 页面配置
    • 访问Fe地址:http://192.168.30.128:8080

    • 点击项目名进行具体页面

    • 通过Fe添加Codis-proxy

      如图,在输入框中填入启动的代理地址,之后点击New Proxy进行添加,同 7.2 codis-admin 命令行工具添加

    • 通过fe添加group

      如图在 Proxy 栏可看到我们已经启动的 Proxy, 但是 Group 栏为空,因为我们启动的 codis-server 并未加入到集群

      添加 NEW GROUPNEW GROUP 行输入 1,再点击 NEW GROUP 即可

      添加 Codis Server,Add Server 行输入我们刚刚启动的 codis-server 地址,添加到我们刚新建的 Group,然后再点击 Add Server 按钮即可

      每个group只能有一个主,其余为从服务,可多从,点击如图所示按钮,将服务配置为从服务,之后按照上述 8.3 表格规划依次添加及配置好其余服务

    说明: 上述 8.3 部署 Codis Server 多实例时为拷贝3份数据,更改相关主要配置信息,并未设置主从,原因为 codis-fe 管理端可以配置主从,上述 9.3最后一点也说明了通过fe配置主从方式,也可以直接通过修改redis.conf配置文件来设置主从,修改如下:

    //编辑从服务配置文件
    vim config/redis7380.conf
    //增加如下行,配置主服务地址信息
    slaveof 192.168.30.128 6380
    • 通过fe初始化slot

      新增的集群 slot 状态是 offline,因此我们需要对它进行初始化(将 1024 个 slot 分配到各个 group),通过 fe 提供的 rebalance all slots 按钮可以进行快速初始化,也可自定义配置

    十、命令行工具( 摘自官方文档,详见 : GitHub )

    注意:使用 codis-admin 是十分危险的。

    1. codis-dashboard 异常退出的修复

    当 codis-dashboard 启动时,会在外部存储上存放一条数据,用于存储 dashboard 信息,同时作为 LOCK 存在。当 codis-dashboard 安全退出时,会主动删除该数据。当 codis-dashboard 异常退出时,由于之前 LOCK 未安全删除,重启往往会失败。因此 codis-admin 提供了强制删除工具:

    • 确认 codis-dashboard 进程已经退出(很重要);
    • 运行 codis-admin 删除 LOCK:
    $ ./bin/codis-admin --remove-lock --product=codis-demo --zookeeper=127.0.0.1:2181
    1. codis-proxy 异常退出的修复

    通常 codis-proxy 都是通过 codis-dashboard 进行移除,移除过程中 codis-dashboard 为了安全会向 codis-proxy 发送 offline 指令,成功后才会将 proxy 信息从外部存储中移除。如果 codis-proxy 异常退出,该操作会失败。此时可以使用 codis-admin 工具进行移除:

    • 确认 codis-proxy 进程已经退出(很重要);
    • 运行 codis-admin 删除 proxy:
    $ ./bin/codis-admin --dashboard=127.0.0.1:18080 --remove-proxy --addr=127.0.0.1:11080 --force

    选项 --force 表示,无论 offline 操作是否成功,都从外部存储中将该节点删除。所以操作前,一定要确认该 codis-proxy 进程已经退出。

    参考:https://github.com/CodisLabs/codis

     


  • 相关阅读:
    9种纯CSS3人物信息卡片动态展示效果
    CSS3 animation属性 实现转动效果
    炫酷CSS3垂直时间轴特效
    css实现翻面效果
    uniapp上传图片转base64码
    经常使用的js三元表达式
    async/await 使用
    Python的OS模块批量修改文件名
    解决Tomcat对POST请求文件上传大小的限制
    HTTP 413错误解决方法
  • 原文地址:https://www.cnblogs.com/format-ch/p/9323841.html
Copyright © 2011-2022 走看看