docker搭建集群redis
mkdir /docker mkdir redis-cluster/ touch redis-cluster.tmpl |
Vi redis-cluster.tmpl
port ${PORT} protected-mode no cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce-ip 10.29.40.204 cluster-announce-port ${PORT} cluster-announce-bus-port 1${PORT} appendonly yes |
for port in `seq 8001 8003`; do \ mkdir -p ./${port}/conf \ && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \ && mkdir -p ./${port}/data; \ done |
for port in `seq 8001 8003`; do \ docker run -d -ti \ -v /docker/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \ -v /docker/redis-cluster/${port}/data:/data \ --restart always --name redis-${port} --net host \ --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \ done docker ps docker exec -it redis-8001 bash cd /usr/local/bin/ redis-cli --cluster create \ 10.29.40.204:8001 \ 10.29.40.204:8002 \ 10.29.40.204:8003 yes redis-cli -c -h 10.29.40.204 -p 8001 |
docker 安装redis集群
配置文件
docker run --network host -d --privileged=true --name redis-01 \ -v /etc/localtime:/etc/localtime \ -v /data/redis/node1/conf/redis.conf:/etc/redis/redis.conf \ -v /data/redis/node1/data:/opt/data \ -v /data/redis/node1/log:/opt/log redis \ redis-server /etc/redis/redis.conf docker run --network host -d --privileged=true --name redis-02 \ -v /etc/localtime:/etc/localtime \ -v /data/redis/node2/conf/redis.conf:/etc/redis/redis.conf \ -v /data/redis/node2/data:/opt/data \ -v /data/redis/node2/log:/opt/log redis \ redis-server /etc/redis/redis.conf docker run --network host -d --privileged=true --name redis-03 \ -v /etc/localtime:/etc/localtime \ -v /data/redis/node3/conf/redis.conf:/etc/redis/redis.conf \ -v /data/redis/node3/data:/opt/data \ -v /data/redis/node3/log:/opt/log redis \ redis-server /etc/redis/redis.conf chmod 777 /data/redis -R 组件集群 nsenter -t 28866 -m redis-cli -h 127.0.0.1 -p 6377 --cluster create 192.168.200.128:6377 192.168.200.128:6378 192.168.200.128:6379 --cluster-replicas 0 加权限验证 127.0.0.1:6377> config set masterauth 123 OK 127.0.0.1:6377> config set requirepass 123 OK 127.0.0.1:6377> config rewrite 1. 先创建3个节点所需的目录,这些目录挂载到容器里面(数据存储目录,日志存储目录),这些目录分配权限 chmod -R 777 2. 分别启动3个容器,此时各个redis是相互独立,还没有加入集群 3. redis组件集群 4. 权限配置 |
docker 安装mongodb集群
docker pull mongo docker save -o /usr/mongo.tar mongo:latest docker load -i mongo.tar 创建容器 docker run --name m0 -p 37017:27017 -d mongo --replSet "gyrx1" docker run --name m1 -p 47017:27017 -d mongo --replSet "gyrx1" docker run --name m2 -p 57017:27017 -d mongo --replSet "gyrx1" 进入容器 docker exec -it 容器id /bin/bash docker exec -it e7acdaf2c8e4 /bin/bash mongo --host 10.29.40.204 --port 37017 初始化 rs.initiate( { _id: "gyrx1", members: [ { _id: 0, host : "10.29.40.204:37017" }, { _id: 1, host : "10.29.40.204:47017" }, { _id: 2, host : "10.29.40.204:57017" } ] } ); 验证 rs.conf() rs.status() |
docker安装mongodb有集群间安全验证的副本集集群
无网络状态 docker pull mongo docker save -o /usr/mongo.tar mongo:latest docker load -i mongo.tar docker run --name mongod -p 27016:27017 mkdir -p /data/mongo-rs/{data01,data02,data03,key,backup} cd /data/mongo-rs openssl rand -base64 600 > key/mongo-rs.key chmod 600 key/mongo-rs.key net: port: 27017 #bindIp: 0.0.0.0 systemLog: logAppend: true #destination: file #path: /opt/mongo/logs/mongod.log security: keyFile: "/data/configdb/mongodbKeyfile.key" authorization: "enabled" replication: replSetName: "mongoRs" docker network ls docker network inspect br0 docker run --network br0 -di --name=mongo0 -p 27817:27017 -v /data/mongo0/configdb:/data/configdb/ -v /data/mongo0/db/:/data/db/ mongo:latest --replSet "mongoRs" --bind_ip_all -f /data/configdb/mongod.conf docker run --network br0 -di --name=mongo1 -p 27818:27017 -v /data/mongo1/configdb:/data/configdb/ -v /data/mongo1/db/:/data/db/ mongo:latest --replSet "mongoRs" --bind_ip_all -f /data/configdb/mongod.conf docker run --network br0 -di --name=mongo2 -p 27819:27017 -v /data/mongo2/configdb:/data/configdb/ -v /data/mongo2/db/:/data/db/ mongo:latest --replSet "mongoRs" --bind_ip_all -f /data/configdb/mongod.conf docker exec -it mongo0 bash mongo --host 10.29.40.204 --port 27818 var config={ _id:"mongoRs", members:[ {_id:0,host:"10.29.40.204:27817"}, {_id:1,host:"10.29.40.204:27818"}, {_id:2,host:" 10.29.40.204:27819",arbiterOnly:true} ]}; rs.initiate(config) rs.status() db.createUser({ user: "admin", pwd: "admin", roles: [ {role: "readWriteAnyDatabase", db: "admin"}, {role: "dbAdminAnyDatabase", db: "admin"}, {role: "userAdminAnyDatabase", db: "admin"} ] }) db.createUser({ user: "clusadmin", pwd: "clusadmin", roles: [ {role: "clusterAdmin", db: "admin"}, {role: "clusterManager", db: "admin"}, {role: "clusterMonitor", db: "admin"} ] }) db.createUser({ user: "usertest1", pwd: "test", roles: [ {role: "readWrite", db: "test"}, {role: "dbAdmin", db: "test"}, {role: "userAdmin", db: "test"} ] }) exit 删除容器 开启权限验证 docker run --network br0 -di --name=mongo0 -p 27817:27017 -v /data/mongo0/configdb:/data/configdb/ -v /data/mongo0/db/:/data/db/ mongo:latest -f /data/configdb/mongod.conf docker run --network br0 -di --name=mongo1 -p 27818:27017 -v /data/mongo1/configdb:/data/configdb/ -v /data/mongo1/db/:/data/db/ mongo:latest -f /data/configdb/mongod.conf docker run --network br0 -di --name=mongo2 -p 27819:27017 -v /data/mongo2/configdb:/data/configdb/ -v /data/mongo2/db/:/data/db/ mongo:latest -f /data/configdb/mongod.conf docker exec -it mongo0 bash mongo --host 10.29.40.204 --port 27818 --authenticationDatabase admin -u sAdmin -p sAdmin rs.status() |