【实战+视频】在龙芯CPU和中标麒麟系统上装品高云,实现EC2,EIP,VPC等云服务
2016-06-11 17:18
495 查看
本文详细描述了,如何在国产CPU,龙芯3B(MIPS架构)+中标麒麟OS的运行情况下,如何安装部署品高云(BingoCloudOS),并实现弹性服务器(EC2)、弹性IP(EIP)和虚拟私有云(VPC)等云服务。
至此实现了全国产化(国产CPU+国产OS+国产云操作系统)组团的云操作系统架构,为军队、涉密单位乃至未来的国家整体国产化云平台奠定了坚实基础。
先用一个视频,展示下最终成果
安装思路及背景
BingoCloudOS云平台依赖Erlang、yaws(云控制器依赖),而源内暂无现成的rpm包,所以在安装BingoCloud云平台前,需要先编译安装这几种包,然后对系统做一些调整,由于龙芯CPU并不支持kvm等虚拟化,则我们采取用LXC容器的方式启动虚拟机,因此我们还需升级系统内核。再依次安装BingoCloud的云控制器,集群和节点。
正确应返回下列内容:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
正确应返回:
SELinux status: disable
为了让 lsb_release –id 指令能输出 RedHatEnterpriseServer,需要手工创建脚本如下
内容如下:
#!/bin/sh
echo Distributor ID: RedHatEnterpriseServer
测试结果:
正确应返回:
Distributor ID:RedHatEnterpriseServer
内容如下:
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
gpgkey=file:///media/cdrom
设置好yum源后刷新源缓存
集群依赖
节点依赖
编译Erlang的依赖
编译Erlang的依赖
编译yaws的依赖
作如下修改:
##将 mips64: 修改为 mips64*:
##修改位置的上下文:
mips64*:Linux::)
eval $set_cc_for_build
等同于用以下命令替换:
完成后提示: odbc : ODBC library - link check failed odbc
即,odbc未安装,这个可忽略;wx未安装,也可忽略。
接下来这个要编译要执行很久
至此完成Erlang的安装,可执行erl测试是否可用:
应该出现如下内容:
Erlang R14B (erts-5.8.1) [source] [64-bit] [smp:16:15] [rq:16] [async-threads:0] [kernel-poll:false]
Eshell V5.8.1 (abort with ^G)
1>
出现erl控制台,则说明erl已正确安装。
在erl控制台下输入l(yaws). 能返回{module,yaws}则说明yaws已安装正确
Erlang R14B (erts-5.8.1) [source] [64-bit] [smp:16:15] [rq:16] [async-threads:0] [kernel-poll:false]
Eshell V5.8.1 (abort with ^G)
1>
{module,yaws}
2>
用rpm包将内核升级至2.6.32-1.6版
备份旧内核vmlinux
更新新内核vmlinux
正确应返回:2.6.32-1.6.ns6.mips64el,内核更新成功
正确应返回:
Kernel configuration not found at /proc/config.gz; searching…
Kernel configuration found at /boot/config-2.6.32-1.6.ns6.mips64el
— Namespaces —
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled
— Control groups —
Cgroup: enabled
Cgroup namespace: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: /usr/bin/lxc-checkconfig: line 103: [: too many arguments
enabled
Cgroup cpuset: enabled
— Misc —
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
File capabilities:
Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig
设mysqld开机启动
启动mysqld服务
设置数据库密码
`#mysqladmin -u root password “${sqlpasswd}”
进入数据库
增加品高云所用数据库,并退出
>GRANT ALL PRIVILEGES ON . TO bingocloud@”%” IDENTIFIED BY ‘pass@word1’ WITH GRANT OPTION;
>quit
注释这句: sudoyuminstall−y"install”/res/rpm/erlang-r14b/*.rpm
注释这句: sudoyuminstall−y"install”/res/rpm/yaws-1.89/*.rpm
将install_res=”
改成下面那句:
install_res=”
将install_res=”
改成下面那句:
install_res=”
将install_res=”
改成下面那句:
install_res=”
另外,可运行以下命令快速更改:
至此实现了全国产化(国产CPU+国产OS+国产云操作系统)组团的云操作系统架构,为军队、涉密单位乃至未来的国家整体国产化云平台奠定了坚实基础。
先用一个视频,展示下最终成果
环境信息与思路
版本信息组件 | 版本 |
---|---|
龙芯CPU | 3B(MIPS架构) |
中标麒麟(类RHEL) | 版本:6.0_U5,内核版本:2.6.32-0.54(安装过程中需升级内核版本至2.6.32-1.6) |
Erlang | R14B |
yaws | 1.89 |
LXC | 1.1.0 |
BingoCloudOS | 5.5.0.150716 |
BingoCloudOS云平台依赖Erlang、yaws(云控制器依赖),而源内暂无现成的rpm包,所以在安装BingoCloud云平台前,需要先编译安装这几种包,然后对系统做一些调整,由于龙芯CPU并不支持kvm等虚拟化,则我们采取用LXC容器的方式启动虚拟机,因此我们还需升级系统内核。再依次安装BingoCloud的云控制器,集群和节点。
1.准备工作
1.1.清除iptables配置
#iptables --flush #service iptables save; service iptables restart #iptables --list
正确应返回下列内容:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
1.2.禁用SELinux (默认就禁用了)
#sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #setenforce 0 #/usr/sbin/sestatus -v
正确应返回:
SELinux status: disable
1.3.把服务器伪装成RedHat系统
由于BingoCloudOS并没有针对NeoKilin系统的安装脚本,所以需要伪装成redhat系统:为了让 lsb_release –id 指令能输出 RedHatEnterpriseServer,需要手工创建脚本如下
#vi /usr/bin/lsb_release
内容如下:
#!/bin/sh
echo Distributor ID: RedHatEnterpriseServer
测试结果:
#chmod +x /usr/bin/lsb_release #lsb_release --id
正确应返回:
Distributor ID:RedHatEnterpriseServer
1.4.准备本地yum源:
挂载yum源光盘到本地路径,修改/etc/yum.repos.d/rhel-source.repo,指定baseurl和gpgkey为相应源路径,编辑内容如下,其中/media/cdrom为挂载repo光盘的路径:#vim /etc/yum.repos.d/rhel-source.repo
内容如下:
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
gpgkey=file:///media/cdrom
设置好yum源后刷新源缓存
#yum clean all #yum makecache
1.5.通过yum安装云平台上的各种依赖
主控依赖#yum install lvm2 vconfig sysstat bridge-utils expect mysql-server -y
集群依赖
#yum install lvm2 vconfig sysstat bridge-utils dhcp -y
节点依赖
#yum install lvm2 vconfig sysstat bridge-utils -y
编译Erlang的依赖
#yum install ncurses- autoconf -y
编译Erlang的依赖
#yum install openssl openssl-devel -y
编译yaws的依赖
yum install pam-devel gcc gcc-c++ -y
2.编译安装Erlang
2.1.去Erlang官网下载这里写代码片`
#wget http://www.erlang.org/download/otp_src_R14B.tar.gz #tar -xvzf otp_src_R14B.tar.gz #cd otp_src_R14B
2.2.修改配置文件
#vim erts/autoconf/config.guess
作如下修改:
##将 mips64: 修改为 mips64*:
##修改位置的上下文:
mips64*:Linux::)
eval $set_cc_for_build
等同于用以下命令替换:
#sed -i 's/mips64:Linux:/mips64\*:Linux:/g' erts/autoconf/config.guess
2.3.编译Erlang
#export ERL_TOP=`pwd` #./otp_build autoconf #./otp_build configure --host=mips64el-linux --build=mips64el-unknown-linux-gnu erl_xcomp_sysroot=/
完成后提示: odbc : ODBC library - link check failed odbc
即,odbc未安装,这个可忽略;wx未安装,也可忽略。
接下来这个要编译要执行很久
./otp_build boot -a
2.4.手动安装Erlang至合适位置,并添加环境变量使系统能顺利访问
#./otp_build release -a #mkdir /usr/lib64/erlang/ -p #cp -r release/mips64el-unknown-linux-gnu/* /usr/lib64/erlang/. #cd /usr/lib64/erlang #./Install -minimal `pwd` #export PATH=$PATH:/usr/lib64/erlang/bin #echo 'export PATH=$PATH:/usr/lib64/erlang/bin' >> /etc/bashrc #ln -s /usr/lib64/erlang/bin/erl /usr/bin/erl
至此完成Erlang的安装,可执行erl测试是否可用:
#erl
应该出现如下内容:
Erlang R14B (erts-5.8.1) [source] [64-bit] [smp:16:15] [rq:16] [async-threads:0] [kernel-poll:false]
Eshell V5.8.1 (abort with ^G)
1>
出现erl控制台,则说明erl已正确安装。
3.编译安装yaws (云主控制器需要,作为主控的web服务器)
3.1 去yaws官网下载源码包并解压
#wget http://yaws.hyber.org/download/yaws-1.89.tar.gz #tar -xvzf yaws-1.89.tar.gz #cd yaws-1.89
3.2 编译安装yaws
#./configure --host=mipsel-linux --build=mips64el-unknown-linux-gnu --prefix=/usr/lib64/erlang/lib/yaws #make #make install
3.3 调整yaws的位置,令erlang能正确调用
#cp -r /usr/lib64/erlang/lib/yaws/lib/yaws /usr/lib64/erlang/lib/yaws-1.89
3.4 测试yaws是否可用
#erl
在erl控制台下输入l(yaws). 能返回{module,yaws}则说明yaws已安装正确
Erlang R14B (erts-5.8.1) [source] [64-bit] [smp:16:15] [rq:16] [async-threads:0] [kernel-poll:false]
Eshell V5.8.1 (abort with ^G)
1>
l(yaws).
{module,yaws}
2>
4.安装LXC容器 (云节点需要,作为节点的虚拟化工具)
4.1.在安装LXC前,需升级内核至1.6.0版
#tar -xvf LXC-1.1.0.tar #cd LXC-1.1.0/KERNEL/
用rpm包将内核升级至2.6.32-1.6版
#rpm -Uvh kernel-*.rpm
4.2.调整grub引导启动的vmlinux
#cd /boot/ #cp vmlinuz-2.6.32-1.6.ns6.mips64el boot/. #cd boot/
备份旧内核vmlinux
#mv vmlinux vmlinux_old
更新新内核vmlinux
#mv vmlinuz-2.6.32-1.6.ns6.mips64el vmlinux
4.3.重启系统更新内核
重启#reboot
#uname -r
正确应返回:2.6.32-1.6.ns6.mips64el,内核更新成功
4.4.安装LXC,并检查是否能正常使用
#cd LXC/ #rpm -ivh *.rpm #lxc-checkconfig
正确应返回:
Kernel configuration not found at /proc/config.gz; searching…
Kernel configuration found at /boot/config-2.6.32-1.6.ns6.mips64el
— Namespaces —
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled
— Control groups —
Cgroup: enabled
Cgroup namespace: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: /usr/bin/lxc-checkconfig: line 103: [: too many arguments
enabled
Cgroup cpuset: enabled
— Misc —
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
File capabilities:
Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig
4.5.后续操作
#mkdir /var/lib/lxc/rootfs/ -p #mkdir /cgroup #echo -e "cgroup\t\t\t/cgroup\t\t\tcgroup\tdefaults\t0 0" >> /etc/fstab #mount -a #mount
5.安装云主控制器
5.1.建立mysql数据库
#sqlpasswd=pass@word1
设mysqld开机启动
#chkconfig mysqld on
启动mysqld服务
#service mysqld start
设置数据库密码
`#mysqladmin -u root password “${sqlpasswd}”
进入数据库
#mysql -u root -p
增加品高云所用数据库,并退出
>GRANT ALL PRIVILEGES ON . TO bingocloud@”%” IDENTIFIED BY ‘pass@word1’ WITH GRANT OPTION;
>quit
5.2.解压BingoCloudOS
#mkdir -p /opt/bingocloud/latest #tar -xvzf bingocloud-v5.5.0.150716.tar.gz -C /opt/bingocloud/latest
5.3.调整安装脚本
由于原生的BingoCloudOS此时调用RedHat的安装脚本(指向CentOS),所以我们针对麒麟系统在安装脚本中做适当的调整(防止安装过程中用rpm –q命令检测erlang和yaws等依赖,从而避免安装云服务时意外中止),具体调整如下:#vim /opt/bingocloud/latest/output/tools/install/install_installer.centos.sh
注释这句: sudoyuminstall−y"install”/res/rpm/erlang-r14b/*.rpm
注释这句: sudoyuminstall−y"install”/res/rpm/yaws-1.89/*.rpm
#vim /opt/bingocloud/latest/output/tools/install/install_cloud.centos.sh
将install_res=”
rpm -q erlang yaws lvm2 vconfig sysstat bridge-utils”
改成下面那句:
install_res=”
rpm -q lvm2 vconfig sysstat bridge-utils”
#vim /opt/bingocloud/latest/output/tools/install/install_cluster.centos.sh
将install_res=”
rpm -q erlang dhcp lvm2 vconfig sysstat bridge-utils scapy”
改成下面那句:
install_res=”
rpm -q dhcp lvm2 vconfig sysstat bridge-utils”
#vim /opt/bingocloud/latest/output/tools/install/install_node.centos.sh
将install_res=”
$su_do rpm -q erlang lvm2 vconfig sysstat bridge-utils qemu-kvm libvirt-client”
改成下面那句:
install_res=”
$su_do rpm -q lvm2 vconfig sysstat bridge-utils”
另外,可运行以下命令快速更改:
#cd /opt/bingocloud/latest/output/tools/install #sed -i 's/\$su_do yum install -y \"/\#\$su_do yum install -y \"/g' install_installer.centos.sh #sed -i 's/rpm -q erlang yaws lvm2 vconfig sysstat bridge-utils/rpm -q lvm2 vconfig sysstat bridge-utils/g' install_cloud.centos.sh #sed -i 's/rpm -q erlang dhcp lvm2 vconfig sysstat bridge-utils scapy/rpm -q dhcp lvm2 vconfig sysstat bridge-utils/g' install_cluster.centos.sh #sed -i 's/rpm -q erlang lvm2 vconfig sysstat bridge-utils qemu-kvm libvirt-client/rpm -q lvm2 vconfig sysstat bridge-utils/g' install_node.centos.sh
5.4.运行安装脚本安装BingoCloudOS
#sh /opt/bingocloud/latest/output/install_bingocloud.sh Please visit the following page to complete installation: http://10.202.166.5:8663/[/code]5.5.在云主控制器IP:8663的网页上完成云平台的后续安装
安装完成后,需要进一步添加集群和节点,添加节点前的前期准备工作步骤见后6.调整云平台节点
6.1.编写脚本反馈节点规模的信息
由于未安装libvirt组件,所以节点不能通过virsh nodeinfo这个命令来反馈给主控可以调用多少资源,所以我们手动编写脚本,完成信息的反馈(里面参数根据实际情况而定)。#vi /bin/virsh
添加如下内容
#!/bin/bash
if [ “$*” = “nodeinfo” ]; then
echo “CPU model: mips64”
echo “CPU(s): 4”
echo “CPU frequency: 800 MHz”
echo “CPU socket(s): 1”
echo “Core(s) per socket: 2”
echo “Thread(s) per core: 1”
echo “NUMA cell(s): 1”
echo “Memory size: 4000000 KiB”
fi#chmod +x /bin/virsh #virsh nodeinfo
正确应返回下列内容
CPU model: mips64
CPU(s): 4
CPU frequency: 800 MHz
CPU socket(s): 1
Core(s) per socket: 2
Thread(s) per core: 1
NUMA cell(s): 1
Memory size: 4000000 KiB6.2.打补丁优化云平台对LXC的调用
#cd /opt/bingocloud/latest/output/lib/cloudutility/ebin/ #mv vmachine_lxc.beam vmachine_lxc.beam.bak #cp /root/bingocloud/patch/vmachine_lxc.beam ./6.2.复制镜像文件
#cd -r /root/bingocloud/bcshare/image /bcshare/cloud/image #touch /bcshare/.bingocloud7.在云控制器的控制页面添加集群和节点,并运行虚拟机
7.1.安装云控制器
上接章节【5.5.在云主控制器IP:8663的网页上完成云平台的后续安装】,完成运行BingoCloudOS安装脚本后,访问云控制器的8663端口进行接下来的安装:7.2.添加集群
7.3.添加节点
7.4.创建云网络
7.5.注册现有镜像
( 关于用LXC容器创建镜像的具体步骤,将在后续文档详细介绍 )7.6.创建实例
7.7.添加及绑定弹性IP
7.8.成功创建实例并用ssh连接实例
能顺利用ssh 登陆到实例中,至此,龙芯CPU和中标麒麟系统上成功安装品高云平台。
相关文章推荐
- aws 上使用EC2 搭建***
- Build Your Own Cluster
- 使用Amazon的EC2虚拟主机的一些笔记
- ec2安装vsftp(完整+实际操作+小白)
- aws ec2基本环境安装lamp和vsftp
- AWS EC2搭建tomcat服务器并托管应用
- AWS java+play framework2.1
- EC2常用命令
- 使用亚马逊云服务器踩过的坑,如何取消按需实例
- EC2的实例如何从一个区迁移到另一个区?
- kaggle官网Facial Keypoints Detection教程(1):deeplearning篇
- 亚马逊AWS免费套餐EC2安装centos连接登录并创建root
- EC2开启MySql远程访问
- EC2实例和新I2实例介绍
- 奇虎360通过AWS云服务加速创新
- T2: 一种能累积计算积分的EC2实例类型
- EC2的维护更新
- EC2的维护更新-总结篇及有效经验分享