今天我们将探讨关于KES(KingBaseES)的集群部署方案。作为示例,我们将以读写分离(RWC)集群为例,快速在本地进行部署和安装,并深入了解KES的部署流程。在本章中,我们将采用Windows平台上的可视化部署工具来进行集群的安装和配置。然而,由于硬件资源有限,本次演示仅展示单节点的成功部署,其他节点的部署过程与此相同,重复操作将在此省略。对于有兴趣了解更多部署细节的朋友,可以参考官方文档,获取更详细的安装和配置步骤,官方文档地址如下:官方文档链接

好了,接下来我们开始部署流程的详细演示。

环境准备

由于本次演示主要集中在本地环境,因此我选择在本地安装了Docker Desktop,并通过其来运行CentOS镜像,以便快速准备所需的虚拟机环境。当然,如果你手头有真实的物理机器或虚拟化平台,完全可以直接在这些设备上进行部署,而无需依赖Docker来模拟环境。首先,我们通过Docker Hub获取并拉取所需的CentOS镜像,操作步骤如下所示:

直接拉取官方的centos即可。但是会缺少很多必要的依赖。我们直接启动一下,但是需要暴露出来相应的端口。

docker run -itd -p 20601:22 -p 8890:8890 -p 54321:54321 -v /home/jason:/home/centos --name centos8 --privileged centos /usr/sbin/init

系统环境依赖

这个centos机器基本上什么都没有,所以我们需要安装一些必要依赖,命令如下:

#repos 目录
cd /etc/yum.repos.d/ #修改centos 设置url地址
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* #手动缓存 不执行也可以
yum makecache #更新Yum
yum update -y
#到这里 yum 命令可以正常执行了

执行如图所示:

> #安装 net-tools
> yum install net-tools.x86_64 -y
>
> # 检查有无安装ssh
> yum list installed | grep openssh-server
> #安装 密码和ssh服务
> yum install passwd openssl openssh-server -y
>
> # 使用vim 查看 /etc/ssh/sshd_config 文件
> # PermitRootLogin 需要打卡
> # 监听端口:22端口 和启动的端口对应
> # 开启用户名密码验证关键字:PasswordAuthentication
> # 以上配置一般是默认的,最好查看一下
>
> # 启动 sshd
> systemctl start sshd
> # 配置开机启动
> systemctl enable sshd
>
> # 配置密码 需要确认两次 且密码不可见
> passwd root
> # 到此 docker下安装centos就完成了,且配置了ssh访问

接下来,我们看下金仓对系统的要求。

金仓环境配置

具体操作可以查看官方文档:https://bbs.kingbase.com.cn/kingbase-doc/v9/install-updata/k-deploy/k-deploy-3.html

我把自己使用到的命令基本都已经附加上去了。如图所示:

这里注意下,我们的centos8机器使用命令查看时,是为:service crond status和官方文档有所不同。

集群机器

所以基础问题都已经解决完毕,我们现在需要把已经弄好的容器打包成基础镜像为了部署集群使用,否则,需要每个镜像都要单独配置,很费劲。如图所示:

用到的命令如下:

docker ps

docker commit id name

这样你就可以正常使用这个镜像了,以后直接复制即可。

部署工具

我使用的是windows的可视化工具,具体目录如图所示:

直接双击即可。页面如图所示:

创建集群

所有准备工作准备完毕后,我们开始创建集群,首先选择我们的db压缩包,他会自动上传解压。

开启开发者模式

因为有些界面是需要开发者模式才可以进行查看,所以我们打开一下,输入密码“rdjc12#$”,选择“正常”开启开发者模式。在开发者模式下点击“开发者模式”会提示到您已经在此模式下,如下图所示:

新增节点

我们开始添加第一个节点,这里注意下,使用该工具部署集群时,所有机器都不能有KES服务,必须是一台干净的机器。如果你以前已经有了KES机器在运行,那么请重新申请一台机器。以后切换成集群后,自己迁移数据即可。

这里上传文件后,我这里报错了,显示的是上传失败,起初我以为是文件夹没有创建,但是后来我看了一下,是有这个文件夹的。如图所示:

这个我自己是因为本地没有安装zip依赖导致的,无法解压,所以安装后即可正常。

yum install zip -y

在下一步之后,默认路径需要先创建目录,否则会报错。如图所示:

mkdir -p /home/kingbase/cluster/my_cluster/xiaoyu

接下来还有一个坑就是自己挖的,这里在创建主节点时一直失败。但是信息很有限,如图所示:

找到命令后,我自己开始切换到kingbase用户登录Linux机器,并执行了相关命令。我发现了这些问题,如图所示:

发现,我在使用如下命令是可以进去的:/home/kingbase/cluster/my_cluster/xiaoyu/kingbase/bin/ksql -Uesrep -d esrep

但是一旦加上-h IP地址就失败了:

但是在集群部署的时候,这个命令是脚本自己加上去的,我改不了还。

自己后来一顿排查所有可能发生的问题原因。发现是自己的坑。这里解释一下:

出现这个错误的原因比较特殊,通常情况下,按照我们平时的流程,是不可能发生这种情况的。因为我本地的 Windows 系统已经安装了KES,并且配置的端口号是 54321。在正常情况下,当我在 Docker 中启动 Linux 容器时,我同样暴露了相同的端口号 54321。由于端口冲突,部署工具在尝试连接到 Docker 容器的数据库时,错误地连接到了本地 Windows 系统上的数据库。由于 Windows 上的数据库并没有启用免密登录配置,所以导致了连接失败的情况。

当我手动关闭了 Windows 上的 KES 服务后,部署工具可以顺利连接到 Docker 容器中的数据库,并且部署过程得以正常完成。可以参考下图中所示的配置和环境状态:

终于部署成功了,剩下的就是以此类推新增节点部署即可。

总结

在本章中,我们详细探讨了KES(KingBaseES)集群部署的整个流程,以读写分离(RWC)集群为例,通过本地环境的Docker部署和Windows平台的可视化工具进行配置与安装。虽然本次演示仅限于单节点部署,但整个过程为您提供了清晰的操作步骤和必要的系统配置。我们也深入分析了在集群部署过程中可能遇到的一些常见问题及解决方案,例如端口冲突问题,确保了部署能够顺利进行。

虽然演示的环境受限于硬件资源,但实际部署时,用户可以根据需要扩展节点,搭建更为复杂的集群结构。通过官方文档和详细的步骤说明,大家可以更好地理解和实施KES集群的部署。希望通过本章内容,能帮助读者更顺利地搭建和管理自己的KingBaseES数据库集群,为日后的高效数据管理和运维奠定基础。


我是努力的小雨,一个正经的 Java 东北服务端开发,整天琢磨着 AI 技术这块儿的奥秘。特爱跟人交流技术,喜欢把自己的心得和大家分享。还当上了腾讯云创作之星,阿里云专家博主,华为云云享专家,掘金优秀作者。各种征文、开源比赛的牌子也拿了。

想把我在技术路上走过的弯路和经验全都分享出来,给你们的学习和成长带来点启发,帮一把。

欢迎关注努力的小雨,咱一块儿进步!

KES(KingBaseES)集群部署实战的更多相关文章

  1. (十)RabbitMQ消息队列-高可用集群部署实战

    原文:(十)RabbitMQ消息队列-高可用集群部署实战 前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. Ra ...

  2. KingbaseES集群部署工具安装

    关键字: KingbaseES.Java.ClientTools 一.安装前准备 1.1 软件环境要求 金仓数据库管理系统KingbaseES V8.0支持微软Windows 7.Windows XP ...

  3. RabbitMQ消息队列(十)-高可用集群部署实战

    前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. RabbitMQ集群基本概念 Rabbit模式大概分为以下三种 ...

  4. Elasticsearch单机双节点集群部署实战

    一.安装第一个ElasticSearch(主节点) 1.创建es用户,启动es不能使用root用户 useradd es passwd es12 root用户进入/home/es目录下 2.获取Ela ...

  5. 5000+字硬核干货!Redis 分布式集群部署实战

    原理: Redis集群采用一致性哈希槽的方式将集群中每个主节点都分配一定的哈希槽,对写入的数据进行哈希后分配到某个主节点进行存储. 集群使用公式(CRC16 key)& 16384计算键key ...

  6. Docker | redis集群部署实战

    前面已经简单熟悉过redis的下载安装使用,今天接着部署redis集群(cluster),简单体会一下redis集群的高可用特性. 环境准备 Redis是C语言开发,安装Redis需要先将Redis的 ...

  7. KingbaseES V8R6C5集群部署启动securecmdd服务配置案例

    案例说明: 对于KingbaseES V8R6C5版本在部集群时,需要建立kingbase.root用户在节点间的ssh互信,如果在生产环境禁用root用户ssh登录,则通过ssh部署会失败:在图形化 ...

  8. zookeeper学习与实战(二)集群部署

    上一篇介绍了单机版zookeeper安装,这种情况一般用于开发测试.如果是生产环境建议用分布式集群部署,防止单点故障,增加zookeeper服务的高可用. [环境介绍]       三台机器:192. ...

  9. MyCat集群部署(HAProxy + MyCat)

    本文档内容的依赖龙果学院<基于Dubbo的分布式系统架构实战>课程 二.软件版本 操作系统:CentOS-6.6-x86_64 JDK版本:jdk1.7.0_72 HAProxy版本:ha ...

  10. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

随机推荐

  1. 如何阅读 CPU 电路图(以 6502 为例)

    开篇 你是否曾对 CPU 的工作原理充满好奇,以及简单的晶体管又是如何组成逻辑门,进而构建出复杂的逻辑电路实现?本文将以知名的 6502 CPU 的电路图为例,介绍如何阅读 CPU 电路图,并向你演示 ...

  2. OAS常见错误

    body { font-family: Arial, sans-serif; line-height: 1.6; margin: 20px } h1, h2 { color: rgba(51, 51, ...

  3. UE4纯C++实现游戏快捷栏之物品读取

    我们在上一步骤中创建了快捷栏的UI界面,在这一部分我们将从Json文件中读取物品的相关信息(种类以及属性),来填充到游戏数据中进行存储以便快捷栏使用,具体分以下几部分完成. 1.Types.h: 添加 ...

  4. 拿去面试!一个基于 DDD 的高性能短链系统

    众所周知,商城.RPC.秒杀.论坛.外卖.点评等项目早早就烂大街了,翻开同学的简历一看 10 个里面有 9 个是这些,翻遍全网再很难找到一个既有含金量又能看得懂的项目,针对此,我研发了这样一个可以快速 ...

  5. 基于 Github 平台的 .NET 开源项目模板 - PR 相关

    本篇将介绍开源模板的 PR 相关功能配置 赘述 project.yml 使用周期 文件来源: 运行跟目录下的 scanner.bat/sh 生成的. 文件位置: .github\project.yml ...

  6. .NET云原生应用实践(六):多租户初步

    本章目标 多租户简介 实现public租户下的用户数据隔离 出于开发进度考虑,本章暂不会完全实现多租户的整套体系,而是会实现其中的一小部分:基于默认public租户的数据隔离,并在本章节中会讨论多租户 ...

  7. el-upload上传文件 需要在请求之前加一个校验文件内容格式请求

    before-upload data(){ return { ... //判断是否需要做文件检查 checkFileFormat:false } }, beforeUpload(rawFile) { ...

  8. 初见memcached

    一. 概念 Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能. 二. 适用场合 1. 分布式应用 ...

  9. JVM的参数说明

    Java虚拟机的参数说明 Java运行时数据区域: 线程共享区:方法区(永久区),堆 线程私有区:虚拟机栈,本地方法栈,程序计数器 JAVA_OPTS="-server -Duser.tim ...

  10. Hibernate 之Hibernate缓存

    1.缓存:缓存是什么,解决什么问题? 位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache(摘自Robbin的<缓存技术浅谈>).目的:让数据 ...