从头搭建codis3.0集群

配置hosts映射关系

vi /etc/hosts

192.168.92.137 item01
192.168.92.138 item02
192.168.92.139 item03

配置hostname

set-hostname item01

另外两台台机器的hostname分别设置为item02,item03

reboot -f

配置3台CentOS为ssh免密码互相通信

首先在三台机器上配置对本机的ssh免密码登录

ssh-keygen -t rsa

生成本机的公钥,过程中不断敲回车即可,ssh-keygen命令默认会将公钥放在/root/.ssh目录下

cd /root/.ssh
cp id_rsa.pub authorized_keys

将公钥复制为authorized_keys文件,此时使用ssh连接本机就不需要输入密码了

测试:

ssh item01

接着配置三台机器互相之间的ssh免密码登录

使用ssh-copy-id -i hostname(其他机子)命令将本机的公钥拷贝到指定机器的authorized_keys文件中

测试:

ssh item02

配置jdk环境

  1. yum install lrzsz -y
  2. rz jdk-8u144-linux-x64.tar.gz #上传jdk8包
  3. cd /usr
  4. mkdir java
  5. 解压
    tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/java/
  6. 编辑文件:vim /etc/profile
  7. 在文件尾部添加:

    JAVA_HOME=/usr/java/jdk1.8.0_144/
    export PATH=$JAVA_HOME/bin:$PATH
    
  8. 重新加载一下文件:

    source /etc/profile  
    
  9. 查看jdk版本,验证是否配置成功:

    java -version
    

    这里写图片描述

zooKeeper集群搭建

上传

    rz zookeeper-3.4.8.tar.gz

解压

    tar -zxvf zookeeper-3.4.8.tar.gz -C /usr/

改名

    cd /usr/zookeeper-3.4.8/conf
    mv zoo_sample.cfg zoo.cfg

编辑

注:提前创建好目录/usr/zk/data,/usr/zk/log

vim zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zk/data
dataLogDir=/usr/zk/log
clientPort=2181
server.1=item01:2287:3387
server.2=item02:2287:3387
server.3=item03:2287:3387

这里写图片描述

说明:server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

ssh复制配置好的zookeeper到另外两台机器

scp -r zookeeper-3.4.8/  [email protected]:/usr
scp -r zookeeper-3.4.8/  [email protected]:/usr

配置id

注:在每个zk server配置文件的dataDir所对应的目录下,必须创建一个名为myid的文件,其中的内容必须与zoo.cfg中server.x 中的x相同

touch /usr/zk/data/myid

item01的myid 中的内容为1,对应server.1中的1

item02的myid 中的内容为2,对应server.2中的2

item03的myid 中的内容为3,对应server.3中的3

启动验证

/usr/zookeeper-3.4.8/bin/zkServer.sh start              #启动
/usr/zookeeper-3.4.8/bin/zkServer.sh status             #查看状态
/usr/zookeeper-3.4.8/bin/zkCli.sh -server item01:2181   #客户端连接测试

配置go环境

解压

tar -zxvf go1.10.3.linux-amd64.tar.gz -C /usr/local

配置环境变量

vim /etc/profile

export GOROOT=/usr/local/go                             # 安装路径 
export GOPATH=$HOME/godir                              # 工作路径 
export PATH=$PATH:$GOPATH/bin:$GOROOT/bin                # 命令搜索路径

验证

go version

这里写图片描述

git安装

下载git

wget https://github.com/git/git/archive/v2.14.1.zip

安装依赖

yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

解压git

unzip v2.14.1.zip

将git安装到/usr/local/git上

先进入git-2.14.1文件夹, 编译,安装

cd git-2.14.1
make prefix=/usr/local all
make prefix=/usr/local install

验证

git --version

这里写图片描述

codis集群搭建

下载 Codis 源代码

mkdir -p $GOPATH/src/github.com/CodisLabs
git clone https://github.com/CodisLabs/codis.git -b release3.2

编译 Codis 源代码

cd $GOPATH/src/github.com/CodisLabs/codis
yum install autoconf automake libtool -y     // 这行非常重要,官网没有给出这个,不然安装的时候会报错  
make
ls bin/


total 69124
drwxr-xr-x 4 codis codis     4096 Jan  4 14:55 assets
-rwxr-xr-x 1 codis codis 17600752 Jan  4 14:55 codis-admin
-rwxr-xr-x 1 codis codis 18416320 Jan  4 14:55 codis-dashboard
-rwxr-xr-x 1 codis codis  9498040 Jan  4 14:55 codis-fe
-rwxr-xr-x 1 codis codis 11057280 Jan  4 14:55 codis-proxy
-rwxr-xr-x 1 codis codis  4234432 Jan  4 14:55 codis-server
-rw-r--r-- 1 codis codis      148 Jan  4 14:55 version
... ...

拷贝codis程序和配置

  1. 创建文件夹

    mkdir -p /usr/local/codis/bin
    
  2. 拷贝程序和配置

    cp -rf $GOPATH/src/github.com/CodisLabs/codis/bin/* /usr/local/codis/bin/
    cp -rf $GOPATH/src/github.com/CodisLabs/codis/config/* /usr/local/codis/conf/
    

codis-server

  1. 创建文件夹

    cd /usr/local/codis/conf/
    
  2. 复制配置

    cp redis.conf redis-6379.conf
    cp redis.conf redis-6380.conf
    
  3. 修改配置

    以下为需修改的配置,其他配置走默认

    pidfile /usr/local/codis/proc/redis-6379.pid    # 进程ID文件路径 
    port 6379                                       # 绑定端口 
    logfile "/usr/local/codis/log/redis-6379.log"   # 日志文件路径 
    dbfilename dump-6379.rdb                        # dump文件 
    dir /usr/local/codis/data/redis_data_6379       # dump路径
    masterauth "123456"                             # Master密码(从主同步密码) 
    requirepass "123456"                            # 鉴权密码(客户端连接密码)
    bind 0.0.0.0                                    # 绑定ip
    
  4. 创建文件夹

    mkdir /usr/local/codis/proc
    mkdir /usr/local/codis/log
    mkdir /usr/local/codis/data/redis_data_6379
    mkdir /usr/local/codis/data/redis_data_6380
    
  5. 启动程序

    cd /usr/local/codis/bin/ 
    ./codis-server ../conf/redis-6379.conf &        #启动主程序 
    ./codis-server ../conf/redis-6380.conf &        #启动从程序
    
  6. 查看

    netstat -ntlp
    

    这里写图片描述

codis-dashboard

  1. 生成配置

    ./codis-dashboard --default-conifg | tee ../conf/dashboard.conf
    
  2. 修改配置

    vim ../conf/dashboard.conf
    
    coordinator_name = "zookeeper"                                                   # 外部存储类型
    coordinator_addr = "192.168.92.137:2181,192.168.92.138:2181,192.168.92.139:2181" # 外部存储IP列表
    product_name = "kid"                                                             # 项目名称     
    product_auth = "123456"                                                          # 集群密码(注意:需要与redis配置中的requirepass保持一致)
    admin_addr = "0.0.0.0:18080"                                                     # RESTful API 端口
    
  3. 启动程序

    nohup ./codis-dashboard --ncpu=24 --config=/usr/local/codis/conf/dashboard.conf --log=/usr/local/codis/log/dashboard.log --log-level=WARN &
    
  4. 查看

    netstat -ntlp
    

    从头搭建codis3.0集群_第1张图片

  5. 停止程序(可选)

dashboard不要非正常停止,例如:kill -9 xxx,不然下次启动会报错,会报文件已存在,需要删掉之前的product信息

./codis-admin --dashboard=192.168.92.137:18080 --shutdown

codis-proxy

  1. 生成配置

    ./codis-proxy --default-config | tee ../conf/proxy.conf
    
  2. 修改配置

    以下为需修改的配置,其他配置走默认

    product_name = "kid"                # 设置项目名 
    product_auth = "123456"             # 设置登录dashboard的密码(注意:与redis中requirepass一致)
    session_auth = "56789"              # Redis客户端的登录密码(注意:与redis中requirepass不一致)
    admin_addr = "0.0.0.0:11080"        #绑定端口(Redis客户端连接此端口)
    proxy_addr = "0.0.0.0:19000"        # 外部存储类型
    
  3. 启动程序

    nohup ./codis-proxy --ncpu=24 --config=../conf/proxy.conf --log=../log/proxy.log --log-level=WARN &
    
  4. 查看

    netstat -ntlp
    

    从头搭建codis3.0集群_第2张图片

redis-sentinel

  1. 拷贝程序

    cp -rf $GOPATH/src/github.com/CodisLabs/codis/extern/redis-3.2.11/src/redis-sentinel /usr/local/codis/bin/
    
  2. 拷贝配置

    cp -rf $GOPATH/src/github.com/CodisLabs/codis/extern/redis-3.2.11/sentinel.conf /usr/local/codis/conf/
    
  3. 修改配置

    以下为需修改的配置,其他配置走默认

    bind 0.0.0.0
    protected-mode no
    port 26379
    dir "/usr/local/codis/data"
    
  4. 启动程序

    cd /usr/local/codis/bin/
    nohup ./redis-sentinel ../conf/sentinel.conf &
    
  5. 查看

    netstat -ntlp
    

    从头搭建codis3.0集群_第3张图片

codis-fe

  1. 生成配置

    ./codis-admin --dashboard-list --zookeeper=192.168.92.137:2181 | tee ../conf/codis.json
    
  2. 启动程序

    nohup ./codis-fe --ncpu=4 --log=fe.log --log-level=WARN --zookeeper=192.168.92.137:2181 --listen=0.0.0.0:18090 &
    
  3. 查看

    netstat -ntlp
    

    从头搭建codis3.0集群_第4张图片

组件整合

打开监控界面

打开浏览器,输入http://192.168.92.137:18090便可看到codis集群的监控界面。如下图所示:

从头搭建codis3.0集群_第5张图片

加入codis-proxy

从头搭建codis3.0集群_第6张图片

加入codis-server

从头搭建codis3.0集群_第7张图片

分配slot到group

从头搭建codis3.0集群_第8张图片

sentinels

从头搭建codis3.0集群_第9张图片

完结

其他两台按照上述流程部署,添加进去组成集群即可
至此,codis集群部署完成

下一篇文章构思:nginx+lua直连codis,读取缓存数据,然后存至nginx本地缓存,打造热点数据多级缓存

你可能感兴趣的:(Java)