首页 文章 精选 留言 我的

精选列表

搜索[单机],共4013篇文章
优秀的个人博客,低调大师

Ansible自动化部署安装openGauss3.1企业版单机

文章目录 一、背景 二、环境准备 三、具体实施步骤 3.1、安装ansible 3.2、配置主机清单 3.3、测试主机连通性 3.4、创建相关目录 3.5、下载openGauss软件包到files目录 3.6、创建变量文件 3.7、创建安装时需要的xml模板 3.8、创建任务文件 四、执行自动化安装 4.1、校验语法 4.2、自动化安装openGauss 4.3、安装完成后验证 一、背景 由于IT建设的快速发展,当数据中心业务突增,需要快速部署多套的数据库时,给运维工作带来了不小的压力和挑战,作为运维人员该如何面对面对这种困境呢?另外由于个人的习惯等也会导致所部署的环境不一定与规划完全一致,那么对以后的运维也会产生一定的负面影响。很显然,这种传统的方式已经无法适应当前的情景了,自动化运维应运而生,ansible在自动化运维和devops 的应用中崭露头角。 本文基于ansible工具实现 openGauss 的一键批量部署,传统的部署方式是先修改系统配置、安装依赖包、创建omm用户和组、配置环境变量、上传安装包以及解压、安装等步骤。 按照这个流程和思路,我们把这些操作弄成剧本编排(playbook),交给ansible来做。 二、环境准备 2台主机: 一台为Ansible的管理主机(10.10.10.142),操作系统为CentOS Linux release 7.9.2009 (Core); 另外一台为需要部署openGauss的主机(10.10.10.150),操作系统为CentOS Linux release 7.9.2009 (Core)。 三、具体实施步骤 3.1、安装ansible –在10.10.10.142上进行安装Ansible yum install epel-release -y yum install ansible –y –配置/etc/ansible/ansible.cfg # grep -v '^#' /etc/ansible/ansible.cfg |sed '/^$/d' [defaults] host_key_checking = False callback_whitelist = timer,profile_roles,log_plays log_path = /var/log/ansible.log strategy = free bin_ansible_callbacks = True [inventory] [privilege_escalation] [paramiko_connection] [ssh_connection] [persistent_connection] [accelerate] [selinux] [colors] [diff] [callback_log_plays] log_folder=/tmp/ansible/hosts/ 3.2、配置主机清单 修改主机清单/etc/ansible/hosts,添加主机列表 # cat /etc/ansible/hosts [openGaussdb] 10.10.10.150 ansible_ssh_user=root ansible_ssh_pass=123456 ###10.10.10.150为本次需要安装openGauss的主机 3.3、测试主机连通性 # ansible -i /etc/ansible/hosts openGaussdb -m ping 3.4、创建相关目录 [root@cs79-mysql:~]# cd /etc/ansible/roles/ [root@cs79-mysql:/etc/ansible/roles]# mkdir -p openGauss_Install/{files,vars,tasks,templates} [root@cs79-mysql:/etc/ansible/roles]# tree openGauss_Install/ openGauss_Install/ ├── files ├── tasks ├── templates └── vars 4 directories, 0 files 上述目录主要作用如下: files:存放需要同步到异地服务器的安装文件或者配置文件; tasks:openGauss安装过程需要进行的执行的任务; templates:用于执行openGauss安装的模板文件,一般为脚本; vars:安装openGauss定义的变量; 3.5、下载openGauss软件包到files目录 安装包下载地址:https://opengauss.org/zh/download.html [root@cs79-mysql:/etc/ansible/roles]# cd openGauss_Install/files/ [root@cs79-mysql:/etc/ansible/roles/openGauss_Install/files]# # wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.1.0/x86/openGauss-3.1.0-CentOS-64bit-all.tar.gz –2022-10-09 21:42:01-- https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.1.0/x86/openGauss-3.1.0-CentOS-64bit-all.tar.gz Resolving opengauss.obs.cn-south-1.myhuaweicloud.com (opengauss.obs.cn-south-1.myhuaweicloud.com)… 121.37.63.38, 139.159.208.64, 139.159.208.243 Connecting to opengauss.obs.cn-south-1.myhuaweicloud.com (opengauss.obs.cn-south-1.myhuaweicloud.com)|121.37.63.38|:443… connected. HTTP request sent, awaiting response… 200 OK Length: 123022609 (117M) [application/gzip] Saving to: ‘openGauss-3.1.0-CentOS-64bit-all.tar.gz’ 100%[==================================================================================================================================================================================================>] 123,022,609 38.4MB/s in 3.2s 2022-10-09 21:42:04 (37.1 MB/s) - ‘openGauss-3.1.0-CentOS-64bit-all.tar.gz’ saved [123022609/123022609] 3.6、创建变量文件 [root@cs79-mysql:~]# vi /etc/ansible/roles/openGauss_Install/vars/main.yml #安装包名称 openGauss_software: openGauss-3.1.0-CentOS-64bit-all.tar.gz #解压目录 install_dir: /opt/software/openGauss #omm用户密码 omm_password: openGauss@123 #数据库密码 db_password: openGauss@123 3.7、创建安装时需要的xml模板 [root@cs79-mysql:~]# vi /etc/ansible/roles/openGauss_Install/templates/cluster_config.j2 <?xml version="1.0" encoding="UTF-8"?> <ROOT> <!-- openGauss整体信息 --> <CLUSTER> <!-- 数据库名称 --> <PARAM name="clusterName" value="dbCluster" /> <!-- 数据库节点名称(hostname) --> <PARAM name="nodeNames" value="{ { ansible_hostname }}" /> <!-- 数据库安装目录--> <PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" /> <!-- 日志目录--> <PARAM name="gaussdbLogPath" value="/var/log/omm" /> <!-- 临时文件目录--> <PARAM name="tmpMppdbPath" value="/opt/huawei/tmp" /> <!-- 数据库工具目录--> <PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" /> <!-- 数据库core文件目录--> <PARAM name="corePath" value="/opt/huawei/corefile" /> <!-- 节点IP,与数据库节点名称列表一一对应 --> <PARAM name="backIp1s" value="{ { inventory_hostname }}"/> </CLUSTER> <!-- 每台服务器上的节点部署信息 --> <DEVICELIST> <!-- 节点1上的部署信息 --> <DEVICE sn="1000001"> <!-- 节点1的主机名称 --> <PARAM name="name" value="{ { ansible_hostname }}"/> <!-- 节点1所在的AZ及AZ优先级 --> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="{ { inventory_hostname }}"/> <PARAM name="sshIp1" value="{ { inventory_hostname }}"/> <!--dbnode--> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="26000"/> <PARAM name="dataNode1" value="/opt/huawei/install/data/dn01"/> <PARAM name="dataNode1_syncNum" value="0"/> </DEVICE> </DEVICELIST> </ROOT> 3.8、创建任务文件 [root@cs79-mysql:~]# vi /etc/ansible/roles/openGauss_Install/tasks/main.yml - name: 关闭防火墙 shell: systemctl disable firewalld.service && systemctl stop firewalld.service ignore_errors: true tags: 01_os_syscfg - name: 关闭selinux shell: sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config ignore_errors: true tags: 01_os_syscfg - name: 设置时区 shell: timedatectl set-timezone Asia/Shanghai tags: 01_os_syscfg - name: 关闭RemoveIPC lineinfile: path: /etc/systemd/logind.conf state: present line: "RemoveIPC=no" tags: 01_os_syscfg - name: 重启systemd-logind服务 shell: systemctl daemon-reload && systemctl restart systemd-logind tags: 01_os_syscfg - name: 创建组 group: name=dbgrp gid=2000 tags: 02_user_add - name: 创建用户 user: name=omm uid=2000 group=dbgrp tags: 02_user_add - name: 修改密码 shell: echo "{ {omm_password}}" | passwd --stdin omm tags: 02_user_add - name: 新建目录 file: path="{ {item}}" state=directory mode=0755 owner=omm group=dbgrp with_items: - /opt/software/ - /opt/software/openGauss tags: 03_unzip_db - name: 上传安装包 copy: src={ { openGauss_software}} dest={ { install_dir}} owner=omm group=dbgrp mode=0644 tags: install tags: 03_unzip_db - name: "解压软件包" shell: cd { { install_dir}} && tar -zxvf *all.tar.gz && tar -zxvf *om.tar.gz become: yes become_user: omm tags: 03_unzip_db - name: "安装依赖包" yum: name="libaio-devel,flex,bison,ncurses-devel,glibc-devel,patch,redhat-lsb-core,python3,bzip2,readline-devel,net-tools,tar,gcc,gcc-c++" state=installed tags: 04_os_yum - name: 替换python3版本 shell: mv /usr/bin/python /usr/bin/python2_bak && ln -s /usr/bin/python3 /usr/bin/python && python -V tags: 05_replace_py - name: 配置xml文件 template: src=cluster_config.j2 dest={ { install_dir}}/clusterconfig.xml tags: 06_config_xml - name: 执行预安装脚本 shell: '{ {install_dir}}/script/gs_preinstall -U omm -G dbgrp -X { {install_dir}}/clusterconfig.xml --non-interactive' register: preinstall tags: 07_pre_install - debug: var=preinstall.stdout_lines ignore_errors: true tags: 07_pre_install - name: 检查预安装环境 shell: '{ {install_dir}}/script/gs_checkos -i A -h { { ansible_hostname }} --detail' register: checkos tags: 08_check_os - debug: var=checkos.stdout_lines ignore_errors: true tags: 08_check_os - name: 更改权限 shell: chmod -R 755 { { install_dir}} tags: 09_gs_install - name: 执行gs_install shell: su - omm -c "{ {install_dir}}/script/gs_install -X { {install_dir}}/clusterconfig.xml --gsinit-parameter="--pwpasswd={ { db_password}}"" register: gsinstall tags: 09_gs_install - debug: var=gsinstall.stdout_lines ignore_errors: true tags: 09_gs_install - name: 启动数据库 shell: ss -anpt|grep 26000 && su - omm -c "gs_ctl restart " || su - omm -c "gs_om -t start " tags: 10_db_start - name: "登录数据库" shell: ss -anpt|grep 26000 && su - omm -c "gsql -d postgres -p26000 -r -l" tags: 10_db_start 3.9、创建剧本调用文件 [root@cs79-mysql:~]# vi /etc/ansible/playbook/InstallopenGauss.yml name: Install openGauss hosts: openGaussdb remote_user: root roles: openGauss_Install 四、执行自动化安装 4.1、校验语法 # ansible-playbook -C /etc/ansible/playbook/InstallopenGauss.yml 校验语法通过后,执行下一步安装 4.2、自动化安装openGauss # ansible-playbook /etc/ansible/playbook/InstallopenGauss.yml 4.3、安装完成后验证 至此,整个自动化部署openGauss完毕,如果有多台机器需要部署,添加主机相关信息到/etc/ansible/hosts,再执行ansible-playbook即可。 作者:鸿惊九天 openGauss: 一款高性能、高安全、高可靠的企业级开源关系型数据库。 🍒如果您觉得博主的文章还不错或者有帮助的话,请关注一下博主,如果三连点赞评论收藏就更好啦!谢谢各位大佬给予的支持!

优秀的个人博客,低调大师

Python也可以玩转单机片 : 为大家介绍几个开发板

前言 Python俨然已成为当下最热门的编程语言(可以说没有之一)。Python火到什么程度?它将被加入小学生教材,纳入高考,估计在不远的将来可能会成为一项常用的技能。 学习python能做什么? 可以快速搭建一个漂亮的网站 可以写爬虫 实现微信机器人助手 可以实现很多自动化的任务 IEEE发布2017年编程语言排行榜:Python更是高居首位,那么Python遇上硬件、遇上物联网又会碰撞出怎样的火花呢?**TPYBoard:能跑Python的STM32开发板** TPYBoard成功将Python应用到嵌入式领域的,也就是MicroPython,其脱胎于Python,基于ANSI C(C语言标准),然后在语法上又遵循了Python的规范,主要是为了能在嵌入式硬件上(这里特指微控制器级别)更易于的实现对底层的操作。 可应用于教学更适用于稳定的工业级开发 TPYBoard的MicroPython开发板系列是目前国内做的最全同时也是最专业的,现有产品除了支持MicroPython的TPYBoard V101、V102、V201、V202、V702外,还有stm23F4最小系统板,arduino系列开发板等等,可可应用于教学更适用于稳定的工业级开发,是MicroPython从入门到精通的不二之选,也是广大创客硬件学习路上的良师益友。TPYBoard-MicroPython开发板大盘点:总有一款适合你! 小编推荐一个学python的学习qun 740322234无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享! 1、TPYBoardv10X 基础系列 TPYBoard v10x是基础版系列,搭载STM32F405芯片,支持DFU和SWD两种调试方式,现分为三个版本,简约版、以及分别兼容MicroPython官方板的PYBoardv1.0、PYBoardv1.1,大小64mm*54mm,是MicroPython开发和入门的不二选择! 2、TPYBoardv201 LAN系列 TPYBoardv201,板载以太网串口功能,是一款带以太网的MicroPython开发板。板载商业级网口、10/100M自适应、支持DHCP、稳定简单易上手。 3、TPYBoardv202 WIFI系列 TPYBoardv202,支持Lua和MicroPython两种开发语言,支持MicroPython兼容NodeMCU,一款高性价比的MicroPython-WIFI开发板,轻松将你带入物联网领域! 4、TPYBoardv702 GPRS与GPS(兼容北斗)系列 TPYBoardv702,唯一支持通信定位功能的MicroPython开发板。支持北斗&GPS双模定位、GPRS通信、短信、蓝牙、电话等功能。板载重力传感、温湿度、加速度传感器、蜂鸣器、LCD5110显示屏灯。 TPYBoard现已形成了完善的MicroPython开发体系,并形成了完善的技术文档以及技术支持服务。实践证明,加上稳定可靠的外围电路和抗干扰电源,以TPYBoard为核心的产品能成功应用于苛刻的工业环境,使开源硬件和开发平台得到更广泛的应用,产品多样性远远高于官方开发板,是MicroPython学习的首选。

优秀的个人博客,低调大师

从 Apache RocketMQ 和 Kafka 看 Topic 数量对单机性能的影响

阿里云消息队列测试小组 出品 上一期我们对比了三类消息产品(Kafka、RabbitMQ、RocketMQ)单纯发送小消息的性能,受到了程序猿们的广泛关注,其中大家对这种单纯的发送场景感到并不过瘾,因为没有任何一个网站的业务只有发送消息。本期,我们就来模拟一个真实的场景: 消息的发送和订阅一定是共存的 要支持多个订阅端订阅自己感兴趣的消息 本期我们将针对 RocketMQ 和 Kafka,对比在上述场景中,究竟谁更胜一筹。在正式开始测试之前,首先要向大家明确2个概念:查看上一期文章 1. Topic为何物 Topic是消息中间件里一个重要的概念,每一个Topic代表了一类消息,有了多个Topic,就可以对消息进行归类与隔离。可以参照下图的动物园喂食模型,每一种动物都只能消费相对应的食品。 2. 分区为何物 Kafka和RocketMQ都是磁盘消息队列的模式,对于同一个消费组,一个分区只支持一个消费线程来消费消息。过少的分区,会导致消费速度大大落后于消息的生产速度。所以在实际生产环境中,一个Topic会设置成多分区的模式,来支持多个消费者,参照下图: 在互联网企业的实际生产环境中,Topic数量和分区都会比较多,这就要求消息中间件在多Topic共存的时候,依然能够保证服务的稳定性。下面就进入测试环节,看看消息发送端,订阅端共存时,Kafka和RocketMQ对多Topic的处理能力。 测试目的 对比发送端、接收端共存情况下,Topic数量对Kafka、RocketMQ的性能影响,分区数采用8个分区。这次压测我们只关注服务端的性能指标,所以压测的退出标准是: 不断增加发送端的压力,直到系统吞吐量不再上升,而响应时间拉长。此时服务端出现性能瓶颈,获取相应的系统最佳吞吐量,整个过程中保证消息没有累积。 测试场景 默认每个Topic的分区数为8,每个Topic对应一个订阅者,逐步增加Topic数量。得到如下数据: 可以看到,不论Topic数量是多少,Kafka和RocketMQ均能保证发送端和消费端的TPS持平,就是说,保证了消息没有累积。 根据Topic数量的变化,画出二者的消息处理能力的对比曲线如下图: 从图上可以看出: Kafka在Topic数量由64增长到256时,吞吐量下降了 98.37% 。 RocketMQ在Topic数量由64增长到256时,吞吐量只下降了 16% 。 为什么两个产品的表现如此悬殊呢?这是因为Kafka的每个Topic、每个分区都会对应一个物理文件。当Topic数量增加时,消息分散的落盘策略会导致磁盘IO竞争激烈成为瓶颈。而RocketMQ所有的消息是保存在同一个物理文件中的,Topic和分区数对RocketMQ也只是逻辑概念上的划分,所以Topic数量的增加对RocketMQ的性能不会造成太大的影响。 测试结论 在消息发送端,消费端共存的场景下,随着Topic数的增加Kafka吞吐量会急剧下降,而RocketMQ则表现稳定。因此Kafka适合Topic和消费端都比较少的业务场景,而RocketMQ更适合多Topic,多消费端的业务场景。 你知道阿里云消息队列(MQ)就是 Apache RocketMQ 的商业版吗? 经过上面的测试,RocketMQ几乎是完胜Kafka,其实这并不奇怪,因为RocketMQ就是针对互联网的生产要求孕育而生的,读者现在也应该明白为什么 RocketMQ 可以支撑阿里集团的海量消息业务了吧。 目前阿里云上的消息队列(MQ)就是RocketMQ的商业版,除了与RocketMQ一样具备极佳的性能,还具备哪些差异和优势呢?我们一起来看一看吧: 对比项 阿里云消息队列(MQ) Apache RocketMQ(开源) 安全防护 支持 不支持 主子账号支持 支持 不支持 可靠性 - 同步刷盘- 同步双写 - 超3份数据副本- 99.99999999% - 同步刷盘- 异步刷盘 可用性 - 非常好,99.95%- Always Writable 好 横向扩展能力 - 支持平滑扩展- 支持百万级 QPS 支持 Low Latency 支持 不支持 消费模型 Push / Pull Push / Pull 定时消息 支持(可精确到秒级) 支持(只支持18个固定 Level) 事务消息 支持 不支持 全链路消息轨迹 支持 不支持 消息堆积能力 百亿级别不影响性能 百亿级别影响性能 消息堆积查询 支持 支持 消息回溯 支持 支持 消息重试 支持 支持 死信队列 支持 支持 性能(常规) 非常好百万级 QPS 非常好十万级 QPS 性能(万级 Topic 场景) 非常好百万级 QPS 非常好十万级 QPS 性能(海量消息堆积场景) 非常好百万级 QPS 非常好十万级 QPS 阿里云消息队列Kafka企业级消息服务(MQ-Kafka) VS Apache Kafka 为了拥抱开源生态,阿里云消息队列(MQ)MQ 推出 Kafka 企业级消息服务(MQ-Kafka),全面融合 Kafka 开源生态,兼容 Kafka API,做到无缝迁移,打造更安全、更可靠、更易运维的 Kafka 企业级消息服务。 Apache Kafka和 消息队列 Kafka 企业级消息服务(MQ-Kafka)在性能、可用性、可靠性等方面的对比如下: 对比项 Apache Kafka(开源) 阿里云 MQ-Kafka 安全防护 × √ 主子账号支持 × √ 性能(常规) 非常好 非常好 性能(万级Topic情况下) 低 非常好 性能(海量消息堆积情况下) 低 非常好 可靠性 一般 非常好,99.99999999% 可用性 好 非常好,99.99%,Always Writable 全链路消息轨迹 × √ 消息堆积查询 × √ 消息回溯 × √ 服务支持 用户自己运维 阿里云平台统一运维 除此之外,阿里云 MQ-Kafka也具有很多优势,看详情猛戳这里 立刻去了解Kafka的接入方式吧,无语伦比的简单~MQ-Kafka正在公测中哟~ 关于 阿里云消息队列 MQ,立即查看详情~

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册