标签:
本文详细描述了,如何在国产CPU,龙芯3B(MIPS架构)+中标麒麟OS的运行情况下,如何安装部署品高云(BingoCloudOS),并实现弹性服务器(EC2)、弹性IP(EIP)和虚拟私有云(VPC)等云服务。
至此实现了全国产化(国产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的云控制器,集群和节点。
#iptables --flush
#service iptables save; service iptables restart
#iptables --list
正确应返回下列内容:
Chain INPUT (policy ACCEPT)
target prot opt source destinationChain FORWARD (policy ACCEPT)
target prot opt source destinationChain OUTPUT (policy ACCEPT)
target prot opt source destination
#sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/selinux/config
#setenforce 0
#/usr/sbin/sestatus -v
正确应返回:
SELinux status: disable
由于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
挂载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
主控依赖
#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
#wget http://www.erlang.org/download/otp_src_R14B.tar.gz
#tar -xvzf otp_src_R14B.tar.gz
#cd otp_src_R14B
#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
#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
#./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已正确安装。
#wget http://yaws.hyber.org/download/yaws-1.89.tar.gz
#tar -xvzf yaws-1.89.tar.gz
#cd yaws-1.89
#./configure --host=mipsel-linux --build=mips64el-unknown-linux-gnu --prefix=/usr/lib64/erlang/lib/yaws
#make
#make install
#cp -r /usr/lib64/erlang/lib/yaws/lib/yaws /usr/lib64/erlang/lib/yaws-1.89
#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>
#tar -xvf LXC-1.1.0.tar
#cd LXC-1.1.0/KERNEL/
用rpm包将内核升级至2.6.32-1.6版
#rpm -Uvh kernel-*.rpm
#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
重启
#reboot
#uname -r
正确应返回:2.6.32-1.6.ns6.mips64el,内核更新成功
#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
#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
#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
#mkdir -p /opt/bingocloud/latest
#tar -xvzf bingocloud-v5.5.0.150716.tar.gz -C /opt/bingocloud/latest
由于原生的BingoCloudOS此时调用RedHat的安装脚本(指向CentOS),所以我们针对麒麟系统在安装脚本中做适当的调整(防止安装过程中用rpm –q命令检测erlang和yaws等依赖,从而避免安装云服务时意外中止),具体调整如下:
#vim /opt/bingocloud/latest/output/tools/install/install_installer.centos.sh
注释这句:
注释这句:
#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
#sh /opt/bingocloud/latest/output/install_bingocloud.sh
Please visit the following page to complete installation:
http://10.202.166.5:8663/
安装完成后,需要进一步添加集群和节点,添加节点前的前期准备工作步骤见后
由于未安装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 KiB
#cd /opt/bingocloud/latest/output/lib/cloudutility/ebin/
#mv vmachine_lxc.beam vmachine_lxc.beam.bak
#cp /root/bingocloud/patch/vmachine_lxc.beam ./
#cd -r /root/bingocloud/bcshare/image /bcshare/cloud/image
#touch /bcshare/.bingocloud
上接章节【5.5.在云主控制器IP:8663的网页上完成云平台的后续安装】,完成运行BingoCloudOS安装脚本后,访问云控制器的8663端口进行接下来的安装:
( 关于用LXC容器创建镜像的具体步骤,将在后续文档详细介绍 )
能顺利用ssh 登陆到实例中,至此,龙芯CPU和中标麒麟系统上成功安装品高云平台。
【实战+视频】在龙芯CPU和中标麒麟系统上装品高云,实现EC2,EIP,VPC等云服务
标签:
原文地址:http://blog.csdn.net/qxk2001/article/details/51637197