디렉토리
우리는 빌드 자립에, 환경에 너무 만 테스트 환경을 임시 작업 테스트 및 레디 스 클러스터 환경을 사용하는 테스트가 필요하지만, 준비되지를 받았다. 호스트에 하드 타고 시작하고 싶어하지만, 서버가 나는 고정 표시기를 사용하기로 결정, 너무 많은 고통을하지 않았다. 다음은 빌드에 대한 자세한 단계입니다 :
기본 환경 정보
기본 환경은 다음과 같습니다 :
CentOS는 리눅스 버전 1804년 5월 7일
도커 버전 18.09.4
다음 작업은 루트가 아닌 사용자 경우, 명령이 앞에 추가해야, 루트 계정 작업입니다 sudo는
빌드 단계
- 1, 다운로드 거울 레디 스
고정 표시기의 풀 레디 스
당신이 지정된 버전을 당겨해야하는 경우가 지정되지 않은 경우, 레디 스 이후 버전 번호를 추가 할 필요, 최신 버전은 사용할 수있는 거울을 당겨 고정 표시기 검색 레디 스 미러를 검색
로컬 미러를 확인, 명령 사용할 수있는 고정 표시기 이미지를
- 2, 가상 네트워크 카드를 만들
주로 네트워크 외부 통신 할 수 레디 스 클러스터를 들어, 가상 네트워크 카드를 작성, 일반적으로 브리지 모드에 사용됩니다.
고정 표시기 네트워크 레디 스 그물을 만들
보기 고정 표시기 카드 정보는 명령 사용 고정 표시기 네트워크 LS를
네트워크 세부 dockerr보기 명령 사용 레디 스 그물을 검사 고정 표시기 네트워크를
- 3 프로파일 템플릿을 작성 레디 스
에서 mkdir -p / 홈 / 레디 스 클러스터
CD / 홈 / 레디 스 클러스터
정력 레디 스 - cluster.tmpl
在redis-cluster.tmpl中输入以下内容
port ${PORT}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.168.131
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
各节点解释如下所示:
- port:节点端口,即对外提供通信的端口
- cluster-enabled:是否启用集群
- cluster-config-file:集群配置文件
- cluster-node-timeout:连接超时时间
- cluster-announce-ip:集群各节点IP地址
- cluster-announce-port:集群节点映射端口
- cluster-announce-bus-port:集群总线端口
- appendonly:持久化模式
cluster-announce-ip:这个IP需要特别注意一下,如果要对外提供访问功能,需要填写宿主机的IP,如果填写docker分配的IP(172.x.x.x),可能会导致部分集群节点在跳转时失败。
- 4、创建节点配置文件
在redis-cluser中执行以下命令
for port in $(seq 8010 8015); \
do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
验证上述命令执行的结果是否正确
- 5、创建redis节点容器
执行以下命令即可
for port in $(seq 8010 8015); \
do \
docker run -it -d -p ${port}:${port} -p 1${port}:1${port} \
--privileged=true -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
--privileged=true -v /home/redis-cluster/${port}/data:/data \
--restart always --name redis-${port} --net redis-net \
--sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \
done
验证容器是否创建成功
查看docker给每个节点分配的IP信息
- 6、创建redis-cluster集群
进入一个容器节点
docker exec -it redis-8010 bash
在进入容器后,执行以下命令:
cd /usr/local/bin/
redis-cli --cluster create 192.168.168.131:8010 192.168.168.131:8011 192.168.168.131:8012 192.168.168.131:8013 192.168.168.131:8014 192.168.168.131:8015
出现选择提示信息,输入yes,结果如下所示:
- 7、连接redis-cluster,并添加数据到redis
在节点8010中输入以下命令
redis-cli -c -h 192.168.168.131 -p 8010
- 8、验证集群是否可以任意地方访问
以下验证是基于Windows版本的redis。其下载地址如下:
在Windows中验证的结果如下所示:
搭建中遇到的问题
- 1、所有都搭建完成后,在创建redis-cluster时一直报错
192.168.168.131:8010에서 레디 스에 연결하지 못했습니다 : 호스트에 어떤 경로를
这个原因是因为宿主机的防火墙未关,导致相应的端口被阻止,创建的时候临时关闭防火墙,后面再允许相应的端口即可。
- 2. 성공적 레디 스 클러스터 생성 한 후, 당신은 성공적으로 연결,하지만 점점 값 수의 최종 출현으로 이어지는 점프에왔다 TTL 배기
-> 재전송은 슬롯 [15,495]가 172.18.0.7:8015에 위치한
这种情况通常是因为在前面写配置文件,将cluster-announce-ip写成了docker分配的IP,只需要将该IP换为宿主机的IP即可。
추가 참조
빌드 과정에서 문제가 발생할 가능성이 후, 당신은 중지 또는 삭제 고정 표시기 컨테이너에 필요한 다음과 같은 명령을 사용할 수 있습니다
일괄 정지 고정 표시기 컨테이너 :
고정 표시기 PS -a | 그렙 -i "레디 스-801 *"| | AWK '{$ 1 인쇄}' xargs를 고정 표시기 정지
일괄 삭제 고정 표시기 컨테이너 :
고정 표시기 PS -a | 그렙 -i "레디 스-801 *"| | AWK '{$ 1 인쇄}' xargs를 고정 표시기 RM -f
배치 파일 삭제
RF RM은 801 {0..5} /conf/redis.conf
이들은 고정 표시기 레디 스 클러스터 구조의 간단한 단계를 기반으로, 실제 적용 할 수있다 그렇게 간단하지, 기사는 참고 용입니다.