IBM LinuxOne服务器基于KVM开源技术提供了强大的虚拟化能力,基于LinuxOne的KVM客户机能够充分利用LinuxOne的高容量,高负载,高安全的运行环境,是运行区块链的理想基础设施。
本实验目标是需要在两个LPAR( LinuxOne 分区)上分别运行多个KVM客户机,每个LPAR模拟一个独立的数据中心,KVM客户机是运行在数据中心的服务器。所有的KVM客户机部署到一个ICP Cluster, 利用IBM Blockcahin Platform 2.0在此ICP Cluster上部署区块链网络,并且根据不同的配置策略,控制区块链的网络实体(peer, orderer, ca)运行在不同的数据中心,进行负载分担和容灾备份。
需要达到的区块链网络部署图:
实际部署时,实体序号和分布可能与此图不一致,但是必须达到以下条件
#KVM资源需求
实体 | 每个实体资源需求 | 总资源需求 |
---|---|---|
8 CAs (1 ca/org) | ca: 0.1 vCPUs + 0.2G 内存 | 0.8 vCPU + 1.6G内存 |
16 Peers (2 peers/org) | dind: 2 vCPUs + 2 G 内存 | 4.1 * 16 = 65.6 vCPUs |
- | peer: 1 vCPU + 1 G 内存 | 5.7 * 16 = 91.2 G 内存 |
- | couchdb: 0.5 vCPUs + 2 G 内存 | |
- | proxy: 0.5 vCPUs + 0.5 G 内存 | |
- | fluentd: 0.1 vCPUs + 0.2 G 内存 | |
5 Ordereres (raft with 5 nodes) | orderer: 1 vCPU + 1 G memory | 7.5 vCPUs |
- | proxy : 0.5 vCPUs + 0.5 G memroy | 7.5 G 内存 |
(没有考虑操作系统和其他应用软件的资源占用) 总共需要 73.9 vCPUs + 100.3G内存 , 现在两个LPAR的资源不够,需要在运行的KVM上进行硬件资源overcommit过量配置,LinuxOne可以支持非常好的虚拟机资源过度配置,参考如下:
资源 | 平均过量配置 | 最大过量配置 |
---|---|---|
CPU | 14:1 | 44:1 |
内存 | 1.5:1 | 3.0:1 |
KVM客户机 | 资源配置 | 描述 |
---|---|---|
1台master | 64G 内存 + 32 vCPUs + 120G硬盘 | 部署在LPAR1上,启用ksm 内存共享技术 |
4台workernodes | (64G 内存 + 32 vCPUs + 120G硬盘 ) * 4 | 每个LPAR上部署两台, 启用ksm 内存共享技术 |
1台NFS server | 8 G 内存 + 4 vCPUs + 120G硬盘 | 部署在LPAR2上 |
#KVM客户机安装
部署ICP Clusert里的6台KVM客户机, 部署过程请参考文章在LinuxOne服务器上安装配置KVM客户机
其中Master客户机的Domain配置文件可以参考如下:
<domain type="kvm">
<name>icp-master</name>
<memory unit="GiB">64</memory>
<vcpu>32</vcpu>
<memtune>
<hard_limit unit='KiB'>15728640</hard_limit>
</memtune>
<os>
<type arch='s390x' machine='s390-ccw-virtio-bionic'>hvm</type>
<boot dev='hd'/>
</os>
<iothreads>1</iothreads>
<on_crash>preserve</on_crash>
<devices>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2" cache="none" iothread="1" io="native"/>
<source file="/var/lib/libvirt/images/icp-master.qcow2"/>
<target dev="vda" bus="virtio"/>
</disk>
<interface type='direct' trustGuestRxFilters='yes'>
<mac address='fe:54:00:d1:03:d9'/>
<source dev='vlan507' mode='bridge'/>
<model type='virtio'/>
<address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0002'/>
</interface>
<console type="pty">
<target type="sclp"/>
</console>
<memballoon model="none"/>
</devices>
</domain>
#KVM硬件配置和优化
在区块链网路部署完后,发现两个LPAR的内存占用率过大 (> 90%)。所以我们启用了KSM内存共享技术,能够把LPAR上的内存占用率显著降到30%左右, 具体可以参考文章KVM虚拟机按需优化实例
简单步骤如下:
#临时开启KSM,只能使用重定向,不支持VI编辑器
echo 1 > /sys/kernel/mm/ksm/run
#我们有多个虚拟机,为了防止某个虚拟机无节制的使用内存资源,导致其他虚拟机无法正常使用,就需要对使用的内存进行限制,配置KVM客户机Domain文件,加入如下配置信息限制到15G
<memtune>
<hard_limit unit='KiB'>15728640</hard_limit>
</memtune>
#ICP Cluster安装
请参考ICP Cluster安装文件安装ICP Cluster: Installing IBM Cloud Private Cloud Native, Enterprise, and Community editions
注意:需要按照上面的ICP Cluster 工作节点规划,配置安装文件“/installation_directory/cluster/hosts”,参考 Setting the node roles in the hosts file
在ICP上部署NFS网络文件系统,创建storageclass, 创建的storageclass可以被IBP2.0使用。参考文章 Add a dynamic NFS provisioner to your Kubernetes cluster
#IBP安装
参考下面的文章在ICPCluster上部署IBP2.0
Installing the IBM Blockchain Platform Helm chart
Deploying the IBM Blockchain console
#区块链网络部署
参考下面的文章使用IBP2.0在ICPCluster部署区块链网络:
Build a network tutorial
注意:请参照前面的区块链网络的实体列表(8个组织的cas, peers, orderes)都创建出来,创建时请修改资源配置
8个组织的区块链网络实体创建完成后,这些网络实体没有按照规定
在两个数据中心的工作节点上 (两个LPAR) 均匀分布,不能达到负载均衡和容灾备份的要求,请参考下面的文章,对ICP Cluster的工作节点打标签,对网络实体的部署文件进行修改,控制Pod的分布。参考文档:IBM Could Private,Linux One上通过Affinity进一步控制容器部署
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞2
添加新评论0 条评论