docker - 搭建redis集群和Etcd
概述
由于业务需要,需要把之前的分布式架构调整成微服务,把老项目迁移到k8s的服务中,再开始编码之前,需要再本地环境里做相应的准备工作,使用docker搭建redis集群,Etcd主要是注册本地的rpc服务。
Liunx OS : centos7
Redis :redis-5.0.6
安装Redis
1.安装 gcc 和 常用工具
yum -y install gcc automake autoconf libtool make wget curl git vim
2.redis官方releases版本地址,http://download.redis.io/releases/去下载你想安装的版本。
wget http://download.redis.io/releases/redis-5.0.6.tar.gz && tar zxf redis-5.0.6.tar.gz && cd redis-5.0.6
3.安装,PREFIX指定的是安装目录
make && make install PREFIX=/usr/local/redis
配置redis集群
1.修改配置文件
把daemonize yes , 设置redis后台运行模式, bind 0.0.0.0,允许任何ip链接访问 ,cluster-enable yes 允许集成,cluster-config-file 如果不指定系统会默认生成配置文件。
cluster-enable yes
daemonize yes
bind 0.0.0.0
cluster-config-file nodes.conf
redis.conf 在安装包的根目录里,为了方便可以复制到redis安装目录里。
cp ~/redis-5.0.6/redis.conf /usr/local/redis/
先把配置好的容器打包成redis镜像,启动3个节点,分别是redis1,redis2,redis3
docker run -itd -p 7000:7000 -p 6309:6379 --name redis1 redis:node1
docker run -itd -p 7001:7001 -p 6319:6379 --name redis2 redis:node2
docker run -itd -p 7002:7002 -p 6329:6379 --name redis3 redis:node3
使用docker network ls命令查看docker网络,使用docker network inspect bridge,查看redis实例的具体ip,创建集群时使用,下面是我本地的IP
redis1 172.17.0.3
redis2 172.17.0.4
redis3 172.17.0.5
登陆到redis里,启动redis,查看进程,多出来一个[cluster]字段
[root@107e6ac2f51a /]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 11844 2944 pts/0 Ss+ Feb25 0:00 /bin/bash
root 77 0.0 0.1 63632 5216 ? Ssl Feb25 2:50 /usr/local/redis/bin/redis-server 0.0.0.0:6379 [cluster]
root 91 0.0 0.0 13444 3488 pts/1 Ss Feb25 0:00 bash
root 112 0.0 0.0 24872 3008 pts/1 S+ Feb26 0:00 ./redis-cli -c
root 113 0.0 0.0 13444 3356 pts/2 Ss 03:02 0:00 bash
root 132 0.0 0.0 53348 3880 pts/2 R+ 03:09 0:00 ps aux
登陆到其中一个的redis上,创建集群,使用自动分配槽操作,输入yes
./redis-cli --cluster create 172.17.0.3:6379 172.17.0.4:6379 172.17.0.5:6379 --cluster-replicas 0
查看node节点,使用CLUSTER NODES命令查看具体信息,想了解更多命令可以使用CLUSTER HELP,命令不区分大小写。
./redis-cli -c
3a7cd6396697e53652529458fe237ec0e665bbb6 172.17.0.5:6379@16379 master - 0 1677553881208 3 connected 10923-16383
08ab9df50129ddab8ea1db6ec7ce94508a4e881e 172.17.0.3:6379@16379 myself,master - 0 1677553879000 1 connected 0-5460
f621ea1704db7c7a1f86f2611fe54c2f19c88946 172.17.0.4:6379@16379 master - 0 1677553882226 2 connected 5461-10922
Etcd
Etcd是提供本地Rpc注册使用的服务,直接使用docker-compose安装即可,在网上找到一个很好用的docker-compose文件。
version: "3.5"
services:etcd:hostname: etcdimage: bitnami/etcd:latestdeploy:replicas: 1restart_policy:condition: on-failureprivileged: truevolumes:- "/Users/stark/server/data/etcd:/bitnami/etcd"# 注意这个目录容器要可写,不然会报cannot access data directory: openenvironment:- "ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379"- "ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379"- "ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380"- "ETCD_INITIAL_ADVERTISE_PEER_URLS=http://0.0.0.0:2380"- "ALLOW_NONE_AUTHENTICATION=yes" #参数指不用密码可以连接- "ETCD_INITIAL_CLUSTER=node1=http://0.0.0.0:2380"- "ETCD_NAME=node1"- "ETCD_DATA_DIR=/opt/bitnami/etcd/data" ports:- 2379:2379- 2380:2380
docker-composer启动以后,登陆到etcd容器里,使用etcdctl get --prefix ""命令查看已经注册的rpc服务。
$ docker exec -it etcd_etcd_1 bash
I have no name!@etcd:/opt/bitnami/etcd$ etcdctl get --prefix ""
drama.rpc/112456478076358180
192.168.31.253:8899
至此,微服务需要的准备工作完成了。
相关文章:
docker - 搭建redis集群和Etcd
概述 由于业务需要,需要把之前的分布式架构调整成微服务,把老项目迁移到k8s的服务中,再开始编码之前,需要再本地环境里做相应的准备工作,使用docker搭建redis集群,Etcd主要是注册本地的rpc服务。 Liunx O…...
Java程序开发中如何使用lntelliJ IDEA?
完成了IDEA的安装与启动,下面使用IDEA创建一个Java程序,实现在控制台上打印HelloWorld!的功能,具体步骤如下。 1.创建Java项目 进入New Project界面后,单击New Project选项按钮创建新项目,弹出New Project对话框&…...
【Linux】理解进程地址空间
🍎作者:阿润菜菜 📖专栏:Linux系统编程 我们在学习C语言的时候,都学过内存区域的划分如栈、堆、代码区、数据区这些。但我们其实并不真正理解内存 — 我们之前一直说的内存是物理上的内存吗? 前言 我们…...
Unity脚本 --- 常用API(类)--- GameObject类 和
第一部分 --- GameObject类 1.在Hierarchy 层级面板中添加游戏物体其实就相当于在场景中添加游戏物体 2.每一个场景都有一个自己的Hierarchy层级面板,用来管理场景中的所有游戏物体 3.是的,我们可以创建多个场景 1.首先上面这两个变量都是布尔变量&am…...
HTML标签——表格标签
HTML标签——表格标签 目录HTML标签——表格标签一、表格标题和表头单元格标签场景:注意点:案例实操小结二、表格的结构标签场景:注意点:案例实操:三、合并单元格思路场景:代码实现一、表格标题和表头单元格…...
Telerik JustMock 2023 R1 Crack
Telerik JustMock 2023 R1 Crack 制作单元测试的最快、最灵活和模拟选项。 Telerik JustLock也很简单,可以使用一个模拟工具来帮助您更快地生成更好的单元测试。JustLock使您更容易创建对象并建立对依赖关系的期望,例如,互联网服务需求、数据…...
筑基八层 —— 问题思考分析并解决
目录 零:移步 一.修炼必备 二.问题思考(先思考) 三.问题解答 零:移步 CSDN由于我的排版不怎么好看,我的有道云笔记相当的美观,请移步有道云笔记 一.修炼必备 1.入门必备:VS2019社区版&#x…...
【面试题】当面试官问 Vue2与Vue3的区别,你该怎么回答?
大厂面试题分享 面试题库后端面试题库 (面试必备) 推荐:★★★★★地址:前端面试题库被问到 《vue2 与 vue3 的区别》应该怎么回答Vue 内部根据功能可以被分为三个大的模块:响应性 reactivite、运行时 runtime、编辑器…...
使用Python对excel中的数据进行处理
一、读取excel中的数据首先引入pandas库,没有的话使用控制台安装 —— pip install pandas 。import pandas as pd #引入pandas库,别名为pd#read_excel用于读取excel中的数据,这里只列举常用的两个参数(文件所在路径ÿ…...
TCP协议原理三
文章目录七、延时应答八、捎带应答九、面向字节流粘包问题十、TCP异常情况总结七、延时应答 如果说滑动窗口的关键是让窗口大一些,传输速度就快一些。那么延时应答就是在接收方能够处理的前提下,尽可能把ack返回的窗口大小尽可能大一些。 如果在接受数据…...
mac在命令行里获取root权限
1、为什么要获取root权限? 答:一些命令在正常状态下没有权限会报错,只有获取了root权限才能正常操作。 比如我们想修改一些系统的文件: vim /etc/shells 1 修改后保存,发现没权限,报错了。如下图…...
文献阅读 Improving Seismic Data Resolution with Deep Generative Networks
题目 Improving Seismic Data Resolution with Deep Generative Networks 使用深度生成网络提高地震数据分辨率 摘要 叠前数据的使用,通常可以来解决噪声迹线、覆盖间隙或不规则/不适当的迹线间距等问题。但叠前数据并不总是可用的。作为替代方案,叠后…...
mysql数据库之子查询练习
1、查询员工的姓名、年龄、职位、部门信息(隐式内连接)。 #emp、dept #连接条件:emp.dept_iddept.id select e.name,e.age,e.job,d.name from emp e,dept d where e.dept_idd.id; 2、查询年龄小于30岁的员工姓名、年龄、职位、部…...
西电计算机通信与网络(计网)简答题计算题核心考点汇总(期末真题+核心考点)
文章目录前言一、简答计算题真题概览二、网桥,交换机和路由器三、ARQ协议四、曼彻斯特编码和差分曼彻斯特编码五、CRC六、ARP协议七、LAN相关协议计算前言 主要针对西安电子科技大学《计算机通信与网络》的核心考点进行汇总,包含总共26章的核心简答。 【…...
【博学谷学习记录】超强总结,用心分享丨人工智能 Python基础 个人学习总结之列表排序
目录前言简述list.sort()语法返回值实例无参参数key参数reversesorted()语法返回值实例无参参数key参数reverseoperator.itemgetter功能简述实例List.sort与sored区别sorted原理:Timsort算法扩展list原理数据结构心得前言 经过一周的学习,对Python基础部…...
深度讲解React Props
一、props的介绍 当React遇到的元素是用户自定义的组件,它会将JSX属性作为单个对象传递给该组件,这个对象称之为“props”。 函数声明的组件,会接受一个props形参,获取属性传递的参数 function ComponentA(props) { return <…...
WebRTC现状以及多人视频通话分析
1.WebRTC 概述WebRTC(网页实时通信技术)是一系列为了建立端到端文本或者随机数据的规范,标准,API和概念的统称。这些对等端通常是由两个浏览器组成,但是WebRTC也可以被用于在客户端和服务器之间建立通信连接࿰…...
【Windows】Windows下wget的安装与环境变量配置
1 wget安装 GNU Wget常用于使用命令行下载网络资源(包括但不限于文件、网页等)。 GNU Wget官网:GNU Wget GNU Wget for Windows:GNU Wget for Windows 安装时首先下载主安装包:Complete package, except sources&…...
密码学基础概念
把一段原始数据通过某种算法处理成另外一种数据(原始数据为明文,处理后的数据为密文)。明文->密文:称之为加密。密文->明文:称之为解密。 在加密过程中我们需要知道下面的这些概念: 1)明文…...
科技巨头争相入局,卫星通信领域将迎来怎样的发展?
近年来,全球卫星通信产业进入了一个高速发展的阶段 与卫星通信相关的新技术和新应用不断出现,成为了媒体报道的热点,也引起了公众的广泛关注。 尤其是刚刚过去的2022年,华为和苹果公司分别发布了搭载卫星通信技术的手机…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
k8s从入门到放弃之Pod的容器探针检测
k8s从入门到放弃之Pod的容器探针检测 在Kubernetes(简称K8s)中,容器探测是指kubelet对容器执行定期诊断的过程,以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...
