Redis优化基础[001]docker安装&redis主从

docker主要用途:

  1. 提供一次性配置的环境去部署.
  2. 提供弹性的云服务.
  3. 组建微服务架构, 多容器的方式一台机器可以跑多个服务, 模拟出微服务架构.

Centos安装docker

更新update到最新的版本

# yum update

卸载老版本的docker

# yum remove docker
# yum remove docker-client
# yum remove docker-client-latest
# yum remove docker-common
# yum remove docker-latest
# yum remove docker-latest-logrotate
# yum remove docker-logrotate
# yum remove docker-selinux
# yum remove docker-engine-selinux
# yum remove docker-engine
# rm -rf /etc/systemd/system/docker.service.d
# rm -rf /var/lib/docker
# rm -rf /var/run/docker

安装需要的软件包

# yum install -y yum-utils device-mapper-persistent-data lvm2

设置yum源

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

查看docker版本

# yum list docker-ce --showduplicates|sort -r

安装docker

# yum install docker-ce-18.03.1.ce-1.el7.centos

启动docker

# systemctl start docker

开机自启

# systemctl enable docker

配置国内镜像

    $ sudo vim /etc/docker/daemon.json
        ---
        {
            "registry-mirrors":["http://hub-mirror.c.163.com"]
        }
        ---

启动redis主从容器

创建一个docker镜像

# cd /vagrant
# mkdir docker
# cd docker
# mkdir redis
# cd redis
# vim Dockerfile
    ---
    FROM centos:latest
    RUN groupadd -r redis && useradd  -r -g redis redis
    RUN yum -y update &&  yum -y install epel-release && yum -y install redis && yum -y install net-tools
    EXPOSE 6379
    ---
# docker build -t redis .

查看网络类型

# docker network ls

bridge: docker默认是桥接网络. 每次容器重启都会更换ip地址(组主机内使用)
null: 不能分配ip地址.
host: 绑定端口的, 宿主机的某端口会映射到该容器中.(方便外部通过宿主机端口访问)

启动redis主从容器

容器名称          IP            映射端口号     宿主机IP          服务器运行模式
Redis-master    172.10.0.2    6380->6379    192.168.11.125    Master
Redis-slave     172.10.0.3    6381->6379    192.168.11.125    Slave

创建网络连接

# docker network create --subnet=172.10.0.0/16 mynetwork

启动master容器

# docker run -itd -p 宿主端口:容器端口 --name 容器名称 --net 网络名称 --ip 容器IP 依赖镜像
# docker run -itd -p 6380:6379 --name redis-master --net mynetwork --ip 172.10.0.2 redis

启动slave容器

# docker run -itd -p 6381:6379 --name redis-slave --net mynetwork --ip 172.10.0.3 redis

-d: 后台运行容器, 并返回容器ID;
-i: 以交互模式运行容器, 通常与-t同时使用;
-p: 端口映射, 格式为: 宿主机端口:容器端口
-t: 为容器分配一个伪输入终端, 通常与-i同用
–ip: 指定容器的固定ip
–net: 指定网络模式

查看网络中的容器

# docker network inspect 被"network create"创建的网络名称
# docker network inspect mynetwork

进入容器
开两个窗口各自执行

# docker exec -it redis-master bash
# docker exec -it redis-slave bash

此处即是容器内提示符

配置redis主从节点, 开启主从复制

配置文件
–主服务器redis.conf–

# vi /etc/redis.conf
    ---
    bind 0.0.0.0 # 让所有ip都能访问
    protected-mode no # 测试环境下关闭
    # masterauth <master-password> # 访问密码, 测试环境不设置
    ---

–从服务器redis.conf–

# vi /etc/redis.conf
    ---
    bind 0.0.0.0 # 让所有ip都能访问
    protected-mode no # 测试环境下关闭
    slaveof 172.10.0.2 6379 # 指向主节点的ip和端口号
    # masterauth <master-password> # 访问密码, 测试环境不设置
    ---

启动&测试
–主服务器–

# redis-server /etc/redis.conf &
# redis-cli
127.0.0.1:6379> set kevin 123
OK

–从服务器–

# redis-server /etc/redis.conf &
# redis-cli
127.0.0.1:6379> get kevin
"123"
### 基于Docker配置Redis主从复制的指南 基于Docker配置Redis主从复制需要完成以下几个关键任务:获取镜像、创建容器、配置主从关系以及验证配置。以下是详细的配置过程和注意事项。 #### 1. 获取Redis镜像 首先,确保本地已经安装Docker环境。然后拉取官方的Redis镜像: ```bash docker pull redis ``` #### 2. 创建Redis主服务器容器 运行以下命令创建运行Redis主服务器容器,指定端口映射和网络名称: ```bash docker run -d --name redis-master -p 6379:6379 --network redis-network redis ``` 此命令会启动一个名为`redis-master`的容器,将主机的6379端口映射到容器的6379端口[^1]。 #### 3. 配置Redis从服务器容器 接下来,创建Redis从服务器容器,配置其为主服务器的副本。可以通过挂载自定义配置文件实现这一点。 ##### 3.1 修改`redis.conf`文件 在宿主机上创建或编辑`redis.conf`文件,添加以下内容以配置从服务器: ```conf bind 0.0.0.0 protected-mode no port 6380 replicaof 172.17.0.2 6379 ``` 其中,`172.17.0.2`是主服务器容器的IP地址,可以通过以下命令获取: ```bash docker inspect redis-master | grep IPAddress ``` ##### 3.2 启动从服务器容器 使用以下命令启动从服务器容器,挂载配置文件: ```bash docker run -d --name redis-slave -p 6380:6380 --network redis-network \ -v /path/to/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf ``` 这里,`/path/to/redis.conf`是宿主机上的配置文件路径[^5]。 #### 4. 验证主从复制配置 进入主服务器容器,检查其状态: ```bash docker exec -it redis-master redis-cli info replication ``` 输出中应显示`role:master`和`connected_slaves:1`,表示主服务器已成功连接至少一个从服务器[^4]。 进入从服务器容器,检查其状态: ```bash docker exec -it redis-slave redis-cli info replication ``` 输出中应显示`role:slave`和`master_link_status:up`,表示从服务器已成功连接到主服务器[^4]。 #### 5. 注意事项 - 确保主从服务器容器位于同一Docker网络中,以便它们能够互相通信。可以通过`--network`参数指定网络名称。 - 如果使用自定义配置文件,请确保文件路径正确且权限设置适当。 - 在生产环境中,建议启用密码认证以提高安全性。 ```python # 示例代码:验证主从复制功能 import redis master = redis.StrictRedis(host='localhost', port=6379, decode_responses=True) slave = redis.StrictRedis(host='localhost', port=6380, decode_responses=True) # 写入数据到主服务器 master.set('test_key', 'test_value') # 从从服务器读取数据 value = slave.get('test_key') print(value) # 输出应为 test_value ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值