01-正文
本章节下载: 01-正文 (4.33 MB)
目 录
绿洲平台私有云至少安装在三个节点上,每个节点可以是主机或者虚拟机,对每个节点的最低配置需求如表1-1和表1-2所示。建议统一使用H3C CAS虚拟化平台软件管理虚拟机,若使用其他虚拟化平台可以参考7.1 部署虚拟机。
项目 |
描述 |
CPU |
8vCPU 物理机Intel主频2.3GHz以上都可满足,12核双路CPU可虚拟成24vCPU |
内存 |
至少64GB |
硬盘 |
必须两块磁盘(Sas盘转速10K及以上即可,如果业务量小对物理磁盘转速无要求) · 系统盘:根分区至少200G · 数据盘:600G(具体大小与实际业务相关,数据盘只挂载即可) |
· 虚拟化过程中,为虚拟机分配CPU和内存不可超分配,需要为物理机预留资源,即所有虚拟机的CPU/内存总和不能超过物理机的vCPU核数/内存总量。
· 为保证性能,建议一台物理机虚拟出的虚拟机数量不超过3台。
项目 |
描述 |
节点数量 |
至少3台 |
操作系统 |
必须直接安装CentOS 7.4官方标准版: · 安装文件:CentOS-7-x86_64-DVD-1708.iso · 下载地址:http://vault.centos.org/7.4.1708/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso · Base Environment选择Minimall Install,即最小化安装即可(默认方式) · 创建分区时分区方案请选择LVM |
项目 |
描述 |
连通性 |
· 端口:要求所有安装节点开放22端口 · 虚机:各虚机要求配置固定IP · 节点:各节点要求配置默认网关 |
安全 |
· 根据具体需求开放以下端口: · 10080 HTTP端口(或者其它端口代替) · 10443 HTTPS端口(或者其它端口代替) · 19443 Websocket SSL端口(TCP) · 11883 MQTT对外数据透传端口(TCP) · 12883 MQTT定位数据推送端口(TCP) · 22 SSH端口(或者其它端口代替) · 1681、1691、14005、14006 TCP数据业务对接端口 · 1680、1682、1690、1692、1702、1712、3018、3500、3501、3502 UDP业务端口 |
项目 |
描述 |
配置可以通过主机名访问各节点 |
修改每个节点的/etc/hosts文件,填入集群所有IP/主机名映射关系 |
节点安装要求 |
· 部署节点将成为集群的一个主节点(Master),除了主节点的其他节点为从节点(Slave) · 安装之前需要保证所有主节点和本机以及其他节点完成互信,免密登录 · 建议私有云安装前做好系统参数规划,比如IP、系统时间、系统主机名(不局限于以上)等,私有云安装完成之后不允许修改系统时间 · 私有云安装完成之后,在执行yum update 命令时,请指定确定的包,严禁执行整体yum包的更新,更新会导致私有云不可用 · 集群卸载后不能去删除或卸载最小OS系统自带的rpm包 |
本章主要包含以下内容:
Centos7.4默认部署内核版本过低,需要手动升级至4.19.12版本,内核升级包与操作说明README文档存储在privatecloud/init/rpm/kernel路径下,需要将升级rpm包分发到各节点后按照README文档执行升级。
升级前需使用uname –sr命令检查内核版本,确认是否已经进行过升级,如果已升级为4.19.12版本内核的节点无需进行本操作。
具体操作步骤如下:
(1) 通过scp命令将rpm包分发至各节点/tmp/kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm。
图2-1 rpm包分发
(2) 在各节点执行yum install -y kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm命令安装rpm包。
图2-2 安装rpm包
(3) 确认rpm包安装成功后,执行grub2-set-default 0命令设定默认启动内核,为确保写入成功,建议在执行sync命令后再使用reboot命令重启使新内核生效。
图2-3 设置默认启动内核
(4) 重启后执行uname –sr命令,如果返回Linux 4.19.12-1.el7.elrepo.x86_64表示内核升级成功。
当安装节点处于内网环境,无法完成网络时钟校准时,安装前需进行手动时钟校准,确保时钟正确。
在各节点上执行/usr/bin/date命令查看系统时间,如果不正确,需执行/usr/bin/date MMDDhhmmYYYY命令较准,执行/usr/sbin/hwclock --systohc命令将时间写入硬件时钟。
当Lora网关需要通过IPv6地址接入私有云组网时,需要配置静态全球单播IPv6地址,配置步骤如下:
(1) 在主节点上通过nmcli命令配置静态全球单播IPv6地址,例如:
nmcli connection modify "eth0" ipv6.address 2001::1/64 ipv6.method manual connection.autoconnect on
(2) 通过systemctl restart network命令重启网络服务。
(3) 通过命令ip addr show dev eth0可以查看配置的IPv6地址。
图2-4 查看配置的IPv6地址
(1) 执行hostname命令,查看当前主机名,如果查看结果如图2-5则说明未配置主机名。
(2) 若安装节点未配置主机名,请使用hostnamectl set-hostname命令设置主机名。
图2-6 配置主机名
各节点的主机名不能相同。
(3) 分别在各安装节点上编辑/etc/hosts文件,配置所有安装节点主机名和IP地址的映射关系,如图2-7所示。
图2-7 配置各节点主机名与IP地址的映射关系
通过配置主节点与所有节点之间进行SSH互信可以使主节点SSH免密码登录所有节点,以便完成私有云的安装。具体配置步骤如下:
(1) 在主节点上执行命令ssh-keygen -t rsa命令生成sshkey,然后敲四次回车键,最终输出如图2-8所示则表明成功。
(2) 拷贝sshkey的公钥到所有节点,在主节点上执行ssh-copy-id nodename命令,nodename为各节点的主机名,按回车键后输入各节点的密码。
(3) 验证各节点SSH互信结果,如果从主节点SSH登录到任意从节点都不需要输入密码,那么节点互信设置成功。
图2-9 测试节点互信结果
(4) 如果需要将多台节点配置为主节点,则在所有主节点重复以上步骤,所有主节点均要完成互信配置。
编辑全局配置文件,指定在一键安装时安装哪些组件,全局配置文件的路径为privatecloud/config.json,各参数含义如下:
· isNeedRabbitMQ:true表示需要安装RabbitMQ,false表示不需要;
· isNeedRedis:true表示需要安装Redis,false表示不需要;
· isNeedMongoDB:true表示需要安装MongoDB,false表示不需要;
· isNeedMariaDB:true表示需要安装MariaDB,false表示不需要;
· isNeedHDFS:true表示需要安装HDFS,false表示不需要;
· isNeedFastDFS:true表示需要安装FastDFS,false表示不需要;
· isNeedKong:true表示需要安装Kong,false表示不需要;
· isNeedKafka:true表示需要安装Kafka和zookeeper,false表示不需要;
· isNeedMonitor:true表示需要安装监控组件,false表示不需要;
· isNeedEFK:true表示需要安装日志分析系统,false表示不需要;
· waitTime:表示安装、检测、扩容和卸载组件的最大超时等待时间,单位为秒,缺省值为7200,如果超时后还没执行成功则返回失败,如果安装组件数量过多或者机器性能较差,请将该参数尽量设置大一些,例如:设置14400或更大的值;
· masterVip:所有主节点公用的虚拟IP地址,访问集群服务可通过masterVip:port进行。该IP在集群网段内必须存在且未被使用;
· masterVipId:表示虚拟masterVip地址的唯一标识,值范围1~255,在集群网络内值必须唯一;
· lbIf:表示虚拟masterVip地址绑定的网卡名,该网卡在所有主节点中必须存在,通过该网卡,不同主节点之间可通信;
· deploy:表示部署节点的IP地址;
· master:表示部署Kubernetes主节点的IP地址列表,masterVip默认绑定在列表中的第一个节点,建议将性能好的节点放在master列表的第一位,且支持最多3个主节点;
· nodes:表示部署Kubernetes所有从节点的IP地址,主节点可以同时设置为从节点,节点数不能少于三个;
· nodesForServices:表示部署微服务的节点IP列表,不填写表示部署在所有从节点上;
· nodesForComponent:表示部署指定组件的节点IP列表,不填写表示按组件默认的初始化配置值来部署。值为Key-Value对,Key为组件名称,Value为一数组包含节点IP列表;
· public_net_ip:表示集群对外提供的公网地址或 LB地址,若无公网或LB设置,可以配置成与masterVip一致即可。
· local_disk:表示所要部署本地挂载的磁盘信息,需保证节点信息真实存在,不重复,且节点个数不能少于三个,host参数填写各节点的IP地址,在各个节点执行lsblk命令,查看第二块硬盘名称,并填入devices参数。
图2-10 查看硬盘名称
· cloud_server_domain:云管道业务云端下发配置的域名。默认值为cloudserver.oasis.local,设备侧配置云管道域名参数需要与此保持一致,且要有相应的域名到集群IP地址的解析配置,若该域名参数值为具体的IP地址侧不需要域名解析配置这里提到的IP地址值则通常为前面提到的masterVip或public_net_ip。
· cloud_server_port:云管道业务云端下发配置的端口,默认为19443,设备侧配置云管道端口参数需要与此保持一致,设备侧配置的默认值也是19443。
· isOffline:表示集群网络是否连通公网。默认值为true,表示集群网络不连通公网,false表示集群网络连通公网。
· ipv4_white_port_tcp:表示集群对外IPv4 类型的TCP端口白名单。
· ipv4_white_port_udp:表示集群对外IPv4 类型的UDP端口白名单。
· ipv6_white_port_tcp:表示集群对外IPv6类型的TCP端口白名单。
· ipv6_white_port_udp:表示集群对外IPv6类型的UDP端口白名单。
· ipv4_white_network_segment:表示集群对外可信任网段(当前仅支持IPv4)。
· ntpserver:表示可以信任时钟源的IP或域名,设置该值后集群会向该服务器校时。
· backup_dir:表示备份数据存放目录,需为绝对路径且目录内容是由私有云自带的备份系统生成的。若设置了该备份数据目录,集群安装中会先恢复备份的数据再导入版本初始化数据。
图2-11 编辑全局配置文件
单主节点安装模式说明:
· 在采用多主节点(master参数值有多个IP)安装过程会出现masterVip Ping不通导致部署失败,且确定为客户环境有严格的网络限制背景下,可采用安装单主节点模式部署,即master参数值中只填一个IP地址,且maserVip参数值设置为该IP地址,则会按单个主节点模式进行安装。
· 单主节点安装模式不支持扩容主节点。
防火墙说明:
· 防火墙默认的安全策略是开放集群主节点所在的网段和白名单中的端口。
· 添加的网段白名单格式为:192.168.0.0/16。
· 如果配置文件中的端口与防火墙中的端口不同步,执行python scripts/k8s/firewallUtils.py脚本同步即可。
· 若安装集群之后需要动态修改端口白名单,请执行版本包目录下的python updateRules.py脚本并按照提示操作。
后台会根据配置的参数对安装环境的磁盘IOPS进行监控,如果性能不能达标则会停止安装,编辑性能检测指标配置文件,配置文件的路径为privatecloud/limit_config.json,各参数含义如下:
· diskIOPS:磁盘的随机写的IOPS值,默认3000;用于检测磁盘性能是否合格(IOPS:性能测试的量测方式,每秒的读写次数)
· scpSpeed:远程拷贝速度,默认20M/s,用于检测网络带宽是否合格;
· memorySize:内存大小,默认20000M,用于检测内存大小是否合格;
图2-12 性能指标配置文件
在根目录privatecloud下执行初始化脚本,python initialize.py初始化安装环境,本操作会完成三项工作:
· 检查主节点与所有节点互信完成度,未完全互信时会输出未互信的节点对,此时请根据提示信息完成互信操作;
· 初始化环境,安装所有组件依赖的软件包;
· 生成全局配置目录privatecloud/config,并初始化各组件配置,根据全局配置文件privatecloud/config.json中填写的各安装节点的IP地址,初始化各组件的安装节点IP地址列表,所有组件的配置文件在全局配置目录下均有一份软链接形式的拷贝(即全局和组件下的两处配置文件是等价的,编辑一处两处生效),该目录只在首次初始化过程中生成。
· 执行python initialize.py命令前,请确保privatecloud/config.json中各节点的IP地址填写正确。
· 如果python initialize.py已执行过,且privatecloud/config目录已存在,若再次执行python initialize.py,会提示是否重置所有组件的配置,请根据实际情况选择,如果privatecloud/config目录下所有组件的配置已重新修改过并确认正确,请选择N(不再重置)。
· 如果python initialize.py执行过程中报错或者出现异常,则需要按照提示信息重新确定privatecloud/config.json文件里的配置参数是否正确完整,再次执行初始化脚本时会提示是否重置所有组件的配置,请选择Y(会重新按全局配置文件初始化各组件的配置文件)。
· 配置文件只允许在安装之前修改,并且不允许用户删除。
· 完成安装后,不允许对配置文件进行删除或者不规范的修改。
· 如有IP地址类参数因填写错误而需修改的,请在全局的config.json中修改,并重新执行初始化,如masterVip,安装节点IP地址列表等。
编辑Kubernetes组件的配置文件以保证Kubernetes集群能够正常安装,配置文件的路径为:privatecloud/config/k8s.json,各参数含义如下:
· deploy:表示主节点的IP地址;
· etcd:表示etcd集群地址,奇数个,也就是主节点和从节点的IP地址;
· kube-master:表示部署Kubernetes主节点的IP地址列表,masterVip默认绑定在列表中的第一个节点,建议将性能好的节点放在master列表的第一位;
· lbIf:表示虚拟masterVip地址绑定的网卡名,该网卡在所有主节点中必须存在,且通过该网卡,不同主节点之间可通信;
· masterVip:所有主节点公用的虚拟IP地址,访问集群服务可通过masterVip:port进行。该IP在集群网段内必须存在,且未使用;
· masterVipId:表示虚拟masterVip地址的唯一标识,值范围1-255,在集群网络内值必须唯一;
· isNeedVmac:表示是否需要安装虚拟网卡,默认为false不安装,true表示安装。考虑部分环境因网络安全要求不允许一个网卡上配置多个IP,虚拟网卡是在原有网卡的基础上,创建一个虚拟网卡供masterVip单独使用,该网卡名称格式为 vrrp.{masterVipId}@{lbIf};
· isRunSvc:true表示扩容后,所扩容节的点可以运行services的Pod实例,false表示所扩容的节点不允许运行services的Pod实例。
· apiServerInPort:表示Kubernetes 所有主节点中API Server服务虚拟的端口,该端口在节点中存在,且未使用,默认为6445;
· kube-node:表示Kubernetes安装从节点的IP地址,若包含主节点IP地址则说明主节点也做为从节点;
· new-node:扩容时使用,安装中保持为空数组,不需要填写任何值;
· new-master:扩容时使用,安装中保持为空数组,不需要填写任何值;
· local_disk:表示独立挂载磁盘信息,保证节点信息真实存在,不重复,且节点数目不能少于三个,目前仅支持配置一块磁盘;
· newdisk:保持为空数组,不需要填写任何参数;
· ntpserver:该值为可信任时钟源的IP或域名,设置该值后集群会向该服务器校时。
检查当前环境是否需要安装虚拟网卡的方式(只供参考):
· 执行ip addr add {masterVip}/{掩码} dev {lbIf}命令,然后在其他节点执行ping {masterVip};
· 如果能Ping通则不需要安装,否则需要安装。
· 测试完毕后须通过ip addr del {masterVip}/{掩码} dev {lbIf} 删除配置。
· 因客户环境的网络安全策略各异,建议部署配置前咨询客户的网络管理员了解网络限制详情。
图2-13 编辑Kubernetes配置文件
编辑RabbitMQ组件的配置文件以保证RabbitMQ能够正常安装,配置文件的路径为:privatecloud/config/rabbitmq.json,各参数含义如下:
· new-node:表示需要扩容节点的IP地址,IP地址不可重复,IP地址不可与kube-node中的地址重复,IP地址必须为集群的节点IP,并且该节点状态无异常,本参数仅在扩容时需填写;
· kube-node:表示RabbitMQ安装节点的IP地址,不能为空,不可以重复,建议IP个数不超为3个;
· replicas:表示RabbitMQ安装节点个数,不能超过kube-node的个数。
图2-14 编辑RabbitMQ配置文件
编辑MongoDB组件的配置文件以保证MongoDB能够正常安装,配置文件的路径为:privatecloud/config/mongodb.json,各参数含义如下:
· kube-node:表示MongoDB安装节点的IP地址,可以填写多个。
· mongosReplicas:表示mongos节点副本数,建议不少于2,只允许正整数;
· configReplicas:表示副本数,建议不少于3,只允许正整数;
· configCacheSize:表示单个副本存储引擎内存缓存最大值,默认为3,只允许正整数;
· shardCacheSize:表示单个副本存储引擎内存缓存最大值,默认为3,只允许正整数;
· shard.name:只允许小写字母、数字、英文横线,不允许数字开头或横线结尾,长度不超过58字符;
· shard.replicas:表示副本数,至少为3,只允许正整数,建议配置为3。
· new-node:表示需要扩容节点的IP地址,IP地址不可重复,IP地址不可与kube-node中的地址重复,IP地址必须为集群的节点IP,并且该节点状态无异常,本参数仅在扩容时需填写;
· shard的分片集建议使用默认个数:1个(多组shard虽然能提高存储容量,但增加了处理数据的复杂度危险性较高),另外副本数就建议就配置3个,不建议副本数配置多余3个,因为各shard需要同步数据副本数多了会影响性能。
· shard配置文件中的cacheSize大小能影响MongoDB的性能(设置越大,性能越好)但要注意,该内存分给MongoDB后,MongoDB不会释放内存,所以请合理根据设备性能和业务需求设置参数。
· kube-node配置的节点数大于shard与mongos的副本总数,这样能让shard与mongos分开部署,能最大程度提升mongodb性能,也就是kube-node>=mongosReplicas+shard组分片副本数总和。
图2-15 编辑MongoDB配置文件
用户可以修改shard数组,添加新的shard,数组name属性不能互相重名,否则程序会报错。
编辑Redis组件的配置文件以保证Redis能够正常安装,配置文件的路径为:privatecloud/config/redis.json,各参数含义如下:
· redis_statefulset_replicas:表示Redis服务的个数,通过kubectl get pod命令后可以查看redis服务的pod的数量,默认为6,整数类型,无特殊需求保持默认即可。
· redis_cluster_replicas:表示Redis集群中每个主节点的从节点数,整数类型,默认为1,若IP节点数不够则只能设置为0或1;
· kube-node:表示Redis安装节点的IP地址,可以填写多个;
· new-node:表示需要扩容节点的IP地址,IP地址不可重复,IP地址不可与kube-node中的地址重复,IP地址必须为集群的节点IP,并且该节点状态无异常,本参数仅在扩容时需填写;
· redis_statefulset_replicas>=(redis_cluster_replicas+1)*3
· redis_cluster_replicas=0时,kube-node IP数>=redis_statefulset_replicas
· redis_cluster_replicas>0时,kube-node IP数>=redis_statefulset_replicas/2
· redis_cluster_replicas>0时,保证redis_statefulset_replicas / (1+redis_cluster_replicas) = 整数
· HA特性限制:redis_cluster_replicas=1,kube-node的IP个数小于redis_statefulset_replicas值时,如图2-16中:kube-node的IP数量为3,redis_statefulset_replicas=6,即3个IP主机装3主3从,只支持宕机一台主机A。但想要再宕机一台,一定要先将A恢复并在Redis的 pod Running 3分钟后,即Redis集群恢复主从关系才可以宕机其它主机,否则连续宕机两台会造成集群异常不可恢复。
图2-16 编辑Redis配置文件
编辑MariaDB组件的配置文件以保证MariaDB能够正常安装,配置文件的路径为:privatecloud/config/mariadb.json,各参数含义如下:
· new-node:表示需要扩容节点的IP地址,IP地址不可重复,IP地址不可与kube-node中的地址重复,IP地址必须为集群的节点IP,并且该节点状态无异常,本参数仅在扩容时需填写;
· kube-node:安装MariaDB的节点地址IP列表,不能为空且不能重复,建议配置三个。
· replicas:表示MariaDB初始安装的节点数,数量限制为大于0,且不大于集群安装节点的数量,建议配置为3;
图2-17 编辑MariaDB配置文件
由于MariaDB的镜像文件比较大,在安装过程中可能存在等待时间过长导致超时,从而安装失败的情况。当前单节点等待时间是600秒。如果提示安装失败,而查看pod已经正常运行,可以执行python -m scripts.mariadb.scripts.mariadbInstall命令调用安装MariaDB的脚本单独安装。
编辑FastDFS组件的配置文件以保证FastDFS能够正常安装,配置文件的路径为:privatecloud/config/fastdfs.json,各参数含义如下:
· TRACKER_SERVER_NUM:为预留的配置选项,不可以修改;
· new-node:表示需要扩容节点的IP地址,IP地址不可重复,IP地址不可与kube-node中的地址重复,IP地址必须为集群的节点IP,并且该节点状态无异常,本参数仅在扩容时需填写;
· STORAGE_NUM:表示每个FastDFS组下的Storage的个数,其填写类型必须是大于0的int类型,且不能大于node_hosts的IP的个数,建议填写个数与填写的Node IP个数一致;
· GROUP_NUM:表示FastDFS组的个数,目前仅允许填写1、2、3组,且其填写类型必须是大于0的int类型;
· kube-node:表示节点的IP地址,要求必须填写合法Kubernetes节点的IP地址,且不能少于两个。
图2-18 编辑FastDFS配置文件
编辑HDFS组件的配置文件以保证HDFS能够正常安装,配置文件的路径为:privatecloud/config/hdfs.json,各参数含义如下:
· datanode_replicas:表示副本数,不能大于Kubernetes集群节点数;
· new-node:表示需要扩容节点的IP地址,IP地址不可重复,IP地址不可与kube-node中的地址重复,IP地址必须为集群的节点IP,并且该节点状态无异常,本参数仅在扩容时需填写;
· HA:表示是否安装集群版;
· kube-node:表示HDFS安装节点的IP地址;
图2-19 编辑HDFS配置文件
编辑Kong网关组件的配置文件以保证Kong网关能够正常安装,配置文件的路径为:privatecloud/config/kong.json,常用参数含义如下:
· postgres_stolon_keeper_replicas:表示PostgreSQL数据库本身的副本数。
· new-node:表示需要扩容节点的IP地址,IP地址不可重复,IP地址不可与kube-node中的地址重复,IP地址必须为集群的节点IP,并且该节点状态无异常,本参数仅在扩容时需填写;
· kong_replicas:表示Kong的副本数,默认为3,整数类型;
· postgres_stolon_proxy_replicas:PostgreSQL代理的副本数;
· kube-node:表示安装Kong的节点地址IP列表,IP地址必须为Kubernetes节点集合,列表的长度要大于1。
图2-20 编辑Kong网关配置文件
编辑Kafka组件的配置文件以保证Kafka消息系统能够正常安装,配置文件的路径为:privatecloud/config/kafka.json,各参数含义如下:
· new-node:表示需要扩容节点的IP地址,IP地址不可重复,IP地址不可与kube-node中的地址重复,IP地址必须为集群的节点IP,并且该节点状态无异常,本参数仅在扩容时需填写;
· kafka_replicas:扩容后的pod副本数。
· kube-node:表示安装Kafka的节点的IP地址列表;
图2-21 编辑Kafka配置文件
编辑ZooKeeper组件的配置文件以保证ZooKeeper管理中心能够正常安装,配置文件的路径为:privatecloud/config/zookeeper.json,各参数含义如下:
· kube-node:表示安装ZooKeeper的节点的IP地址列表,要求必须为奇数,IP地址不可重复,IP地址必须为集群的节点IP,并且该节点状态无异常;
· new-node:表示需要扩容节点的IP地址,IP地址不可重复,IP地址不可与kube-node中的地址重复,IP地址必须为集群的节点IP,并且该节点状态无异常,本参数仅在扩容时需填写;
· zk_replicas:ZooKeeper安装的节点个数,必须为大于零的整数,默认为3个,真实安装的节点个数为:取kube-node列表中地址IP个数和zk_replicas两者的较小值,如果zk_replicas较小,则安装的节点为kube-node列表中的前zk_replicas个。
图2-22 编辑ZooKeeper配置文件
Zookeeper集群的节点数一般都是奇数的(3、5等等),拥有3个节点的Zookeeper集群可以容忍1个节点故障,5个节点的集群可以容忍2个节点故障。这里根据实际需求选择节点个数;不建议使用超过7个节点的Zookeeper集群,因为一致性协议会导致集群性能下降。(建议Kubernetes节点数大于3时,Zookeeper初始安装节点数少于可用安装的机器数目,以备后期冗余)。
编辑EFK组件的配置文件以保证EFK日志中心能够正常安装,配置文件的路径为:privatecloud/config/efk.json,各参数含义如下:
· elastic.kube-node:表示安装Elasticsearch组件的节点的IP地址列表,IP地址必须为集群的节点IP,并且该节点状态无异常;
· elastic.wait-time:表示安装Elasticsearch组件的等待时间,需要根据节点的性能和网络带宽进行调整,单位为分钟,缺省值为30,若安装过程中因为等待时间过短安装失败,需要卸载EFK日志中心集群,调整等待时间后,重新安装。
· elastic.new-node:表示需要扩容节点的IP地址,IP地址不可重复,IP地址不可与kube-node中的地址重复,IP地址必须为集群的节点IP,并且该节点状态无异常,本参数仅在扩容时需填写;
· fluentd.kube-node:表示安装fluent组件的节点的IP地址,IP地址必须为集群的节点IP,并且该节点状态无异常,因为Kubernetes pod会进行迁移,建议配置所有Kubernetes节点的IP地址;
· fluentd.wait-time:表示安装Fluent组件的等待时间,需要根据节点的性能和网络带宽进行调整,单位为分钟,缺省值为10,若安装过程中因为等待时间过短安装失败,需要卸载EFK日志中心集群,调整等待时间后,重新安装;
· fluentd.new-node:表示需要扩容节点的IP地址,IP地址不可重复,IP地址不可与kube-node中的地址重复,IP地址必须为集群的节点IP,并且该节点状态无异常;
图2-23 编辑EFK配置文件
监控组件默认开启邮件告警功能并使用主节点系统自带的postfix邮件服务器发送邮件,默认帐号密码为prometheus/prometheus_Admin。建议编辑监控组件的配置文件修改邮件服务器及账号,配置文件的路径为:privatecloud/config/monitor.json,各参数含义如下:
· kube-node:表示安装监控组件的节点的IP地址列表,要求必须为奇数,IP地址不可重复,IP地址必须为集群的节点IP,并且该节点状态无异常;
· smtp:表示邮件服务器配置;
· enable:true表示开启邮件服务器,false表示关闭邮件服务器;
· host:表示邮件服务器的IP地址及端口;
· user:表示登录邮件服务器用户名;
· password:表示登录邮件服务器的密码;
· from_address:表示发送告警邮件的地址。
图2-24 编辑监控组件配置文件
编辑Nginx组件的配置文件以保证Nginx正常安装,配置文件的路径为:privatecloud/config/nginx.json,各参数含义如下:
· new-node:表示需要扩容节点的IP地址,IP地址不可重复,IP地址不可与kube-node中的地址重复,IP地址必须为集群的节点IP,并且该节点状态无异常,本参数仅在扩容时需填写;
· kube-node:表示安装监控组件的节点的IP地址列表,IP地址不可重复,IP地址必须为集群的节点IP,并且该节点状态无异常;
· replicas:表示安装Nginx的副本数,必须为大于0的整数。
图2-25 编辑Nginx配置文件
编辑微服务的配置文件以保证微服务能够正常安装,配置文件的路径为:privatecloud/config/services.json,各参数含义如下:
· cloud_server_domain:云管道业务云端下发配置的域名。默认值为cloudserver.oasis.local,设备侧配置云管道域名参数需要与此保持一致,且要有相应的域名到集群IP地址的解析配置,若该域名参数值为具体的IP地址侧不需要域名解析配置这里提到的IP地址值则通常为前面提到的masterVip或public_net_ip;
· cloud_server_port:云管道业务云端下发配置的端口,默认为19443,设备侧配置云管道端口参数需要与此保持一致,设备侧配置的默认值也是19443;
· isOffline:表示集群网络是否连通公网。默认值为true,表示集群网络不连通公网,false表示集群网络连通公网;
· haproxy:等同于全局配置文件中的public_net_ip配置参数,表示集群所在环境对外提供的公网地址或 LB地址;
· nginx:表示访问nginx的IP地址和端口号(http的端口)或者域名,IP地址等同于全局配置文件中的masterVip配置参数;
· nginx-ssl:表示访问nginx的IP地址和端口号(https的端口)或者域名,IP地址等同于全局配置文件中的masterVip配置参数;
· nodesForServices:表示部署services的节点IP列表,不填写表示部署所有节点。
图2-26 编辑微服务的配置文件
(1) 执行python install.py命令开始自动化一键安装,一键安装会根据配置文件的配置安装各组件和微服务,安装时间大约120~180分钟,请耐心等待即可。
(2) 安装完成后当前窗口需要注销再重新登入,就可以使用kubectl等命令了。
(3) 安装完成后,等待10~20分钟,所有基础组件都已启动并正常能运行,同时绿洲微服务和物联网微服务也可以正常运行,可用kubectl get pod命令查看当前运行状态,如果所有微服务都进入running状态并无重启,则表示安装成功。
安装前会打印Kubernetes和各组件的配置,确认配置正确请选y继续安装,否则选择n终止安装,修改正确后重新执行python install.py。
图2-27 查看运行状态
安装完成后可以通过以下方式登录到绿洲私有云平台。
登录地址为全局配置文件中的masterVip地址,访问它的10443端口即可,如:https://192.168.56.23:10443
缺省账号:iotadmin
缺省密码:iotadmin_2018
图2-28 登录到绿洲门户
登录地址为绿洲门户地址加/oasisapp后缀即可,如:https://192.168.56.23:10443/oasisapp/
缺省账号:iotadmin
缺省密码:iotadmin_2018
图2-29 登录到绿洲应用中心
登录地址为:https://masterVip:10443/manage/,根据本文配置即访问https://192.168.56.23:10443/manage/
缺省账号:manage
缺省密码:manage_Admin
图2-30 管理门户登录页面
在私有云管理门户页面中可以看到当前集群的组件、节点等信息,还可以跳转到其他组件的管理页面。
图2-31 在运维工具菜单中可以查看当前集群的组件、节点等信息
图2-32 在常用链接菜单中可以跳转到其他组件的管理门户
缺省账号:prometheus
缺省密码:prometheus_Admin
图2-33 Prometheus监控页面
通过以下步骤可以配置接收告警信息:
(1) 点击左侧导航栏告警图标。
图2-34 点击左侧导航栏告警图标
(2) 填写接收告警信息的邮箱地址信息。
图2-35 填写接收告警信息的邮箱地址信息
(3) 转到Alerts metrics面板,点击右上角保存图标即可
图2-36 保持配置
缺省账号:o2o
缺省密码:o2o
图2-37 RabbitMQ管理页面
缺省账号:emqtt
缺省密码:emqtt_Admin
图2-38 EmqttSSL监控页面
缺省账号:kafka
缺省密码:kafka_Admin
图2-39 Kafka管理页面
需要添加Kafka集群相关的配置,具体步骤如下:
(1) 点击Cluster下拉框选中Add Cluster;
图2-40 添加Kafka集群
(2) 在如下页面中填写Kafka集群相关信息,Cluster Name表示Kafka监控集群名称,Cluster Zookeeper Hosts默认填写zookeeper-hs:2181即可,Kafka Version选择1.1.0 或者1.1.1,Enable Jmx Pollin表示配置更多的性能指标,如消息发送接收速率等;
图2-41 填写Kafka集群信息
(3) 如下图中三个高亮线程池相关参数值设置为2或3(要求大于1)。
¡ brokerViewThreadPoolSize:broker view用于获取每个broker需展示的相关数据,该参数表示设置数据获取时的线程池大小;
¡ offsetCacheThreadPoolSize:表示缓存offset的线程池大小;
¡ kafkaAdminClientThreadPoolSize:AdminClient是kafka用来管理offset的工具,该参数表示AdminClient的线程池大小。
图2-42 扩展配置选项
缺省账号:kong
缺省密码:kong_Admin
图2-43 Kong管理页面
登录地址为全局配置文件中的masterVip地址,访问https://masterVip:10443/efk/即可,如:https://192.168.56.23:10443/efk/
缺省账号:admin
缺省密码:admin
图2-44 登录到EFK页面
本章主要包含以下内容:
Kubernetes扩容支持三种情况的扩容:
· 新节点扩容成Kubernetes的node角色;
· Kubernetes的node角色扩容成master角色;
· 新节点扩容成node及master角色。
(1) 修改privatecloud/config/k8s.json文件中的new-node参数。在new-node处增加一个或多个Kubernetes节点,增加的节点不能与kube-node中的节点重复,新增的节点之间也不能重复。
(2) 修改privatecloud/config/k8s.json文件中的new-disk参数。在new-disk处增加需要扩容的节点IP地址与磁盘名字。要求IP地址需与new-node处填写的IP地址保持一致,且需要扩容的磁盘需是裸盘,不允许有分区,磁盘的名字可通过lsblk命令进行确认。
(3) 配置完成后在privatecloud目录下执行python -m scripts.k8s.scale命令进行扩容。
图3-1 编辑扩单node的配置文件
(1) 编辑privatecloud/config/k8s.json文件,在new-master数组中添加需扩容为master角色的节点IP,仅扩容master角色时,此IP必须已经为node角色,即该IP必须为kube-node中的IP。
(2) 在privatecloud目录下执行python -m scripts.k8s.scaleMaster命令进行扩容。
图3-2 编辑扩master的配置文件
(1) 编辑privatecloud/config/k8s.json文件,参考3.1.1及3.1.2将新IP填入new-master、new-node及new-disk中,三者的IP地址必须保持一致。
(2) 在privatecloud目录下执行python -m scripts.k8s.scaleMaster命令进行扩容。
图3-3 编辑扩master及node的配置文件
(1) 修改rabbitmq.json文件,在new-node中填写待扩容节点的IP地址,增加的节点不能与kube-node中的节点重复,多个IP地址之间使用英文逗号分隔。
(2) 在privatecloud目录下执行python -m scripts.rabbitmq.script.mqScale命令进行扩容。
在扩容前庆确保RabbitMQ的pod正常运行。
图3-4 编辑RabbitMQ配置文件
(1) 修改privatecloud/config/mongodb.json文件,MongoDB扩容是扩一组分片,分片可与其它分片在同一个节点上(如有足够节点为保障性能最大化利用,尽量与其它分片组分开部署)。
¡ 在相同节点上扩容,可以在new-node选项中不添加节点IP参数,此时就会在kube-node中随机选IP进行扩容(如果new-node节点数量不足 扩容时会有提示是否继续安装);
¡ 新增节点进行扩容,可在new-node选项中添加节点IP参数,此时MongoDB新加shard会部署在对应的新节点上。
(2) 扩容时在privatecloud/config/mongodb.json配置文件中的shard数组里新增一组shard分片信息其中name不能与其他分片名一致,名字必须是以mongodb-shard开头,且只支持小写字母。
(3) 配置修改完成后在privatecloud目录执行 python -m scripts.mongodb.scripts.mongoScale命令,如果扩容成功会返回0,失败返回1。
图3-5 编辑扩容MongoDB的配置文件
(1) 编辑privatecloud/config/redis.json文件,在new-node中填写待扩容节点的IP地址,增加的节点不能与kube-node中的节点重复,多个IP地址之间使用英文逗号分隔。
(2) new-node填写的IP地址数量需为正偶数。
(3) 在privatecloud目录下,执行python -m scripts.redis.script.redisScale命令进行扩容。
在扩容时,redis.json配置文件中仅new-node参数可修改,其它参数不允许修改。
图3-6 编辑Redis的配置文件
(1) 编辑privatecloud/config/mariadb.json,在new-node中填写待扩容节点的IP地址,增加的节点不能与kube-node中的节点重复,多个IP地址之间使用英文逗号分隔。
(2) 执行python –m scripts.mariadb.scripts.mariadbScale进行扩容。
图3-7 编辑扩容MariaDB的配置文件
(1) FastDFS扩容即扩容GROUP数量,编辑privatecloud/config/fastdfs_expend.json,修改GROUP_NUM值,改为预期的GROUP数量,如GROUP_NUM默认值为1,可改为2或3,,在new-node参数中填写扩容节点的IP地址,如果不填写或者节点数量不足,则随机使用已有节点扩容新GROUP。
(2) 在privatecloud目录下执行python –m scripts.fastdfs.script.fastdfsScale命令进行扩容。
图3-8 编辑扩容FastDFS的配置文件
(1) 编辑privatecloud/config/kong.json,在new-node参数中填写扩容节点的IP地址,需与kube-node中的IP不同。
(2) 在privatecloud目录下执行python -scripts.kong.script.kongScale命令。
图3-9 编辑扩容Kong的配置文件
(1) 编辑privatecloud/config/kafka.json中的new-node参数,添加要扩容的节点IP并保存修改;
扩容时kafka_replicas配置会被忽略。
(2) 在privatecloud目录下执行python -m scripts.kafka.script.kafkaScale进行扩容。
图3-10 编辑扩容Kafka的配置文件
(1) 编辑privatecloud/config/zookeeper.json,将要扩容的IP地址加入到new-node参数列表中,IP地址的规范必须符合2.9.10 ZooKeeper配置章节的规范要求,扩容后的节点个数是实际已安装的节点个数加上扩容的节点个数,扩容后的节点总个数必须为奇数;
(2) 执行 python -m scripts.zookeeper.script.zkScale进行扩容。
图3-11 编辑扩容ZooKeeper的配置文件
(1) 在配置文件中将要新增加的节点(至少一个)加入到new_node中,扩容后会根据kube_node数量和new_node数量部署Nginx实例数量;
new-node上不能存在Nginx的pod,扩容时replicas配置会被忽略。
(2) 在privatecloud目录下,执行命令python –m scripts.nginx.scripts.nginxScale进行扩容。
图3-12 编辑扩容Nginx的配置文件
(1) 在配置文件中将要新增加的节点(至少一个)加入到new_node中,扩容后会根据kube_node数量和new_node数量部署HDFS实例数量;
new-node最好不要填写存在HDFS的pod的节点,否则该节点的扩容将无效;扩容时replicas配置会被忽略。
(2) 在安装目录privatecloud中执行命令python –m scripts.hadoop.script.hdfsScale进行扩容。
图3-13 编辑扩容HDFS的配置文件
在privatecloud目录下执行python -m scripts.addons.upgrade param命令,其中 param 为微服务包的路径(绝对路径或相对路径),如:/root/iot_smartcity.tar(微服务包为压缩包形式)或 /root/iot_smarcity(微服务包为文件夹形式)。
· 如果微服务已安装,则会进行升级。
· 如果微服务包config.json中某些微服务镜像标签较老(相对于环境中已安装的)执行升级时检测到这些微服务会给出提示:是否确实替换成旧版本的微服务,请根据实际情况选择,如图4-2所示。
图4-1 执行升级
图4-2 选择是否替换为旧版本的微服务
因为Kubernetes为基础组件,所以不提供单独卸载,故只提供卸载整个集群。卸载集群为不可逆操作,请谨慎执行,为数据安全考虑,卸载集群前会进行数据备份。
在privatecloud目录下执行python uninstall.py param1 param2命令即开始卸载私有云,其中param1、param2均为可选参数,param1为数据备份存储路径(绝对路径, 默认为 /home/backupdata),如:/home/backup ;param2为数据备份存储节点(仅支持集群内节点,默认为本节点),本文中以192.168.56.66为例。
如图5-1所示,在安装包所在privatecloud目录下,执行python uninstall.py /home/backup 192.168.56.66命令,会有提示确认备份数据存放位置,备份完成后会再次提示确认是否卸载,输入y代表确认,输入n代表取消。
版本升级操作集成了旧版本卸载和新版本安装两大操作,耗时较长。版本升级为不可逆操作,也需要谨慎执行,为数据安全考虑,支持版本升级过程中进行数据备份和恢复。具体步骤如下:
(1) 上传新版本包到私有云部署节点,并将旧版本的安装包(/root/privatecloud)删除;
(2) 解压新版本包到“/root/”目录下,即可以看到新版本的安装包;
图6-1 上传安装包
(3) 进入新版本的安装包目录下,按照2.6-2.9章节描述修改全局配置文件等配置参数,并完成配置初始化操作,其中masterVipId参数值要求与旧版本环境不一致;
图6-2 完成配置文件编辑并进行初始化
(4) 配置数据备份并进行版本升级,私有云的数据备份与版本升级是同时进行的,不需要单独进行数据备份与恢复,执行python update.py param1命令,其中param1为可选参数,默认为true,表示需要进行数据备份并在升级后恢复数据,false表示不需要数据备份恢复。为数据安全考虑,建议配置为进行数据备份恢复。在进行版本升级过程中,只会对param1入参会进行二次确认,其它后续操作不会进行二次确认,故请在第3步中务必正确配置参数。
图6-3 进行数据备份恢复
图6-4 不进行数据备份
图6-5 升级成功示意图
本章节描述在物理机上如何通过Linux自带的KVM虚拟化技术部署虚拟机,适用于没有H3C CAS虚拟化软件的环境。
如图7-1所示,执行命令egrep ‘vmx|svm’ /proc/cpuinfo命令,若结果中有vmx(Intel)或svm(AMD)字样,就说明CPU是支持的。
将服务器文件“/etc/sysconfig/selinux”中的SELinux=enforcing修改为SELinux=disabled。
图7-2 关闭SELinux
执行命令yum install epel-release net-tools vim unzip zip wget ftp -y。
图7-3 核对并安装依赖的基本软件包
执行命令yum install qemu-kvm libvirt virt-install bridge-utils -y。
图7-4 核对并安装KVM软件包及其依赖包
执行命令lsmod | grep kvm命令验证KVM安装结果。
图7-5 验证KVM安装结果
systemctl start libvirtd
systemctl enable libvirtd
依次执行如下命令:
systemctl status libvirtd
systemctl is-enabled libvirtd
图7-6 验证KVM服务状态
进入目录“/etc/sysconfig/network-scripts/ ”,修改网卡配置文件前建议先将桥接的网卡配置文件进行备份。
(1) 创建ifcfg-br0文件,内容如下:
TYPE=Bridge
OTPROTO=none
IPADDR=192.168.58.88
PREFIX=24
GATEWAY=192.168.58.1
DEVICE=br0
ONBOOT=yes
(2) 备份并移除已有网卡配置文件如ifcfg-enp8s0f0(可能是其它名字),再重新创建该文件,内容如下:
TYPE=Ethernet
PROXY_METHOD=none
BRIDGE=br0
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
DEVICE=enp8s0f0
ONBOOT=yes
(3) 执行systemctl restart network命令重启网络服务。
(1) 准备操作系统安装镜像文件并存放在物理机的“/root/”目录下,本文使用前文建议的镜像:CentOS-7-x86_64-DVD-1708.iso。通过服务器HDM口进入服务器管理页面,打开虚拟机管理界面,如图7-7所示。
(2) 设置新VM操作系统的镜像文件,如图7-8所示,点击左上角红框标注的按钮,会出现“New Vm”界面;再按提示点击“Forward”按钮,选择用于安装操作系统的镜像文件,然后继续点击“Forward”按钮开始下一步安装。
(3) 配置VM资源,建议安装表1-1所述要求配置;点击“Forward”按钮继续下一步开始分配磁盘,第一块磁盘为系统盘,建议大小为200G,并勾选“安装前配置选项”,如图7-9所示。
(4) 增加数据磁盘,点击“Add Hardware”按钮增加数据盘,数据盘空间建议至少600G,如图7-10所示添加磁盘。
(5) 配置磁盘,操作系统语言默认为英文,如图7-11所示进行主要的手动配置项:时区、磁盘和网络。其中时区建议选择shanghai;磁盘分区选择手动配置方式,且分区格式必须为LVM格式。
图7-12 手动配置系统盘分区
图7-13 自动分配分区
(6) 自动分区结果如图7-14所示,包含“/home”分区和“swap”分区,需将这两个分区删除。红框标注的加号和减号分别为分区增加和删除,此时先将/home和/swap分区删除,再将剩余的空间全部划分给”/”分区,完成后的效果如图7-15所示。
(7) 配置网络,修改虚机的主机名,如图7-16所示编辑Host name,然后点击Apply,最后点击右侧configure按钮。
(8) 配置网卡,如图7-17所示务必选中为Manual,设置好IP地址和网关后进行保存,并将图7-16中右上角处的开关选为on。
(9) 完成配置开始安装系统,配置完成后点击done按钮,回到最初的配置界面即图。点击“Begin Installation”按钮开始安装操作系统,根据引导界面设置root账户的密码;等待约90分钟左右安装成功后,重启虚拟机即可使用。
部分客户私有云环境不连接到公网,通常需要提供一台可连公网的跳板机来完成私有云部署和运维,可以在跳板机上安装诊断运维工具来提高运行期间的运维保障效率。
通过该工具,可以完成对私有云平台的一键诊断、一键恢复、异常日志收集等功能,操作简单快捷,现场将一键收集到的日志回传至研发,快速完成必要的故障分析及恢复。
该工具为一款Windows平台桌面程序,支持Windows 7和Windows 10两个版本。
(1) 获取安装包,将私有云环境主节点路径“/home/h3coasis/repairtool/运维.exe”文件拷贝至跳板机。
(2) 双击安装程序“运维.exe”,开始安装,双击后弹出如图7-18所示对话框,点击下一步开始安装如图7-19所示,直至安装完成如图7-20所示。
(3) 安装完成后跳板机桌面上会出现本工具的快捷方式,如图7-21所示“一键运维”的快捷图标。
(1) 双击“一键运维”快捷图标,将弹出登录界面,目前支持两种登录方式:账号登录和私钥登录。
(2) 账号登录:输入任意主节点IP、用户名和密码和SSH端口号(默认为22)。在成功登陆后将保存用户名和密码,第二次登陆不需要再输入IP、用户名和密码,如图7-22所示。
(3) 私钥登录:私钥登录相对账号登录更加安全,通常采用采用该方式登录时,账号登录方式已被关闭。首先取得对应服务器的私钥文件,私钥文件存放位置为“/root/.ssh/id_rsa”;然后通过FTP等形式将该文件拷贝至跳板机,最后在登录时选择存放的路径即可,如图7-23所示。
(4) 当输入的信息不正确时无法连接上集群,如图7-24所示会弹窗提示连接失败,正确会提示连接成功。若对应服务器上未安装私有云平台会弹窗提示未安装私有云,点击确定后会退出应用程序。
(5) 私有云环境连接成功后会自动执行检查脚本,如图7-25所示进入加载界面,待脚本执行正常且数据解析完成后将显示如图7-26所示诊断结果。
运维工具图表显示共分为四部分,分别为NodeMessage、clusterMessage、PodMessage以及功能按键。
(1) NodeMessage:私有云平台各虚拟机基本信息,如下表7-1所示:
项目 |
说明 |
备注 |
ip |
节点IP地址 |
|
connection |
是否处于notready状态 |
False表示该节点处于notready状态 |
cpu |
已使用CPU大小 |
1000m表示一个core |
cpu_percent |
CPU使用比例 |
|
Memory |
已使用内存大小 |
|
Memory_percent |
内存消耗比例 |
|
disk |
磁盘剩余空间大小 |
|
(2) clusterMessage:表示各基础组件的健康状况,状态栏 中ok表示该组件可以正常使用,error表示该组件不健康;简述栏会简要提示组件不健康部位,详情栏则显示组件不健康相关的详细日志。
(3) PodMessage:检测4种非Running状态的pod,其中处于CrashLoopBackOff的pod的日志会在启动工具时获取,可以点击“保存日志”按钮将日志下载到跳板机上。
(4) 功能按键:包括一键重启、修复、刷新以及保存日志等。
¡ 一键重启:该按键的功能是一键重启私有云集群所有虚拟机,请谨慎操作,只有在常规修复手段无效果且经过研发确定方可使用。
¡ 修复按钮:该按钮为一键修复按钮,会根据基础组件的检查结果触发对应的修复脚本,尝试修复异常的基础组件,并同时删除处于异常状态的微服务pod。
¡ 当无异常基础组件时,该按键会升级为强制修复,主要适用于基础组件正常,但业务功能不正常的情景。此时修复期间会删除所有微服务pod,可能会导致一段时间内的服务中断,若业务功能正常,请勿点击该按钮。
¡ 刷新按钮:重新执行检测脚本,并刷新诊断结果。
¡ 保存日志:点击后将弹出如图7-25所示界面,将收集的日志下载保存至跳板机指定路径下。
图7-27 保存日志
¡ 监控指标:点击后将弹出如图7-28所示界面,将Prometheus中的监控数据保存至跳板机指定路径下。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!