您的位置:首页 > 其它

【实战+视频】在龙芯CPU和中标麒麟系统上装品高云,实现EC2,EIP,VPC等云服务

2016-06-11 17:18 417 查看
本文详细描述了,如何在国产CPU,龙芯3B(MIPS架构)+中标麒麟OS的运行情况下,如何安装部署品高云(BingoCloudOS),并实现弹性服务器(EC2)、弹性IP(EIP)和虚拟私有云(VPC)等云服务。

至此实现了全国产化(国产CPU+国产OS+国产云操作系统)组团的云操作系统架构,为军队、涉密单位乃至未来的国家整体国产化云平台奠定了坚实基础。

先用一个视频,展示下最终成果

环境信息与思路

版本信息

组件版本
龙芯CPU3B(MIPS架构)
中标麒麟(类RHEL)版本:6.0_U5,内核版本:2.6.32-0.54(安装过程中需升级内核版本至2.6.32-1.6)
ErlangR14B
yaws1.89
LXC1.1.0
BingoCloudOS5.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 KiB

6.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/.bingocloud


7.在云控制器的控制页面添加集群和节点,并运行虚拟机

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和中标麒麟系统上成功安装品高云平台。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息