配置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环境
- yum install lrzsz -y
- rz jdk-8u144-linux-x64.tar.gz #上传jdk8包
- cd /usr
- mkdir java
- 解压
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/java/ - 编辑文件:vim /etc/profile
在文件尾部添加:
JAVA_HOME=/usr/java/jdk1.8.0_144/ export PATH=$JAVA_HOME/bin:$PATH
重新加载一下文件:
source /etc/profile
查看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/ root@192.168.92.138:/usr
scp -r zookeeper-3.4.8/ root@192.168.92.139:/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程序和配置
创建文件夹
mkdir -p /usr/local/codis/bin
拷贝程序和配置
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
创建文件夹
cd /usr/local/codis/conf/
复制配置
cp redis.conf redis-6379.conf cp redis.conf redis-6380.conf
修改配置
以下为需修改的配置,其他配置走默认
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
创建文件夹
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
启动程序
cd /usr/local/codis/bin/ ./codis-server ../conf/redis-6379.conf & #启动主程序 ./codis-server ../conf/redis-6380.conf & #启动从程序
查看
netstat -ntlp
codis-dashboard
生成配置
./codis-dashboard --default-conifg | tee ../conf/dashboard.conf
修改配置
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 端口
启动程序
nohup ./codis-dashboard --ncpu=24 --config=/usr/local/codis/conf/dashboard.conf --log=/usr/local/codis/log/dashboard.log --log-level=WARN &
查看
netstat -ntlp
- 停止程序(可选)
dashboard不要非正常停止,例如:kill -9 xxx,不然下次启动会报错,会报文件已存在,需要删掉之前的product信息
./codis-admin --dashboard=192.168.92.137:18080 --shutdown
codis-proxy
生成配置
./codis-proxy --default-config | tee ../conf/proxy.conf
修改配置
以下为需修改的配置,其他配置走默认
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" # 外部存储类型
启动程序
nohup ./codis-proxy --ncpu=24 --config=../conf/proxy.conf --log=../log/proxy.log --log-level=WARN &
查看
netstat -ntlp
redis-sentinel
拷贝程序
cp -rf $GOPATH/src/github.com/CodisLabs/codis/extern/redis-3.2.11/src/redis-sentinel /usr/local/codis/bin/
拷贝配置
cp -rf $GOPATH/src/github.com/CodisLabs/codis/extern/redis-3.2.11/sentinel.conf /usr/local/codis/conf/
修改配置
以下为需修改的配置,其他配置走默认
bind 0.0.0.0 protected-mode no port 26379 dir "/usr/local/codis/data"
启动程序
cd /usr/local/codis/bin/ nohup ./redis-sentinel ../conf/sentinel.conf &
查看
netstat -ntlp
codis-fe
生成配置
./codis-admin --dashboard-list --zookeeper=192.168.92.137:2181 | tee ../conf/codis.json
启动程序
nohup ./codis-fe --ncpu=4 --log=fe.log --log-level=WARN --zookeeper=192.168.92.137:2181 --listen=0.0.0.0:18090 &
查看
netstat -ntlp
组件整合
打开监控界面
打开浏览器,输入http://192.168.92.137:18090便可看到codis集群的监控界面。如下图所示:
加入codis-proxy
加入codis-server
分配slot到group
sentinels
完结
其他两台按照上述流程部署,添加进去组成集群即可
至此,codis集群部署完成
下一篇文章构思:nginx+lua直连codis,读取缓存数据,然后存至nginx本地缓存,打造热点数据多级缓存