學(xué)校課程要搭建 Cloudstack 環(huán)境,雖然書上寫得很詳細潮模,但是只能說書本的教程太麻煩不適合我這種懶人亮蛔。那就自己想辦法動手搭建咯。
一句話完事再登?
其實 Cloudstack 提供了一個模擬器尔邓,直接執(zhí)行:
docker run --name simulator -p 8080:8080 -d cloudstack/simulator
等待幾分鐘,Cloudstack 就已經(jīng)部署在本地了锉矢。好了梯嗽,教程到此結(jié)束。
這樣寫估計是要被吐槽的沽损,所以接下來看看剛才那句話執(zhí)行之后到底發(fā)生了什么灯节。
Xen、KVM 與 OpenVZ
在開始之前需要解釋一下這三者的區(qū)別。
簡單來說炎疆,KVM 內(nèi)置于 Linux卡骂,是內(nèi)核模塊;Xen形入、OpenVZ 是 Linux 的一個應(yīng)用全跨。
相關(guān)解釋這里挺詳細的:https://www.yingsuo.tech/article/openvz-xen-kvm.html
本文使用的是 Xen 虛擬化技術(shù)。
看 Dockerfile 知原理
先上模擬器的 Dockerfile:
FROM ubuntu:16.04
MAINTAINER "Apache CloudStack" <dev@cloudstack.apache.org>
LABEL Vendor="Apache.org" License="ApacheV2" Version="4.10.0.0-SNAPSHOT"
RUN apt-get -y update && apt-get install -y \
genisoimage \
libffi-dev \
libssl-dev \
git \
sudo \
ipmitool \
maven \
openjdk-8-jdk \
python-dev \
python-setuptools \
python-pip \
python-mysql.connector \
supervisor
RUN echo 'mysql-server mysql-server/root_password password root' | debconf-set-selections; \
echo 'mysql-server mysql-server/root_password_again password root' | debconf-set-selections;
RUN apt-get install -qqy mysql-server && \
apt-get clean all && \
mkdir /var/run/mysqld; \
chown mysql /var/run/mysqld
RUN echo '''sql_mode ="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"''' >> /etc/mysql/mysql.conf.d/mysqld.cnf
RUN (/usr/bin/mysqld_safe &); sleep 5; mysqladmin -u root -proot password ''
#RUN pip install --allow-external mysql-connector-python mysql-connector-python
COPY tools/docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY . ./root
WORKDIR /root
RUN mvn -Pdeveloper -Dsimulator -DskipTests clean install
RUN (/usr/bin/mysqld_safe &); \
sleep 5; \
mvn -Pdeveloper -pl developer -Ddeploydb; \
mvn -Pdeveloper -pl developer -Ddeploydb-simulator; \
MARVIN_FILE=`find /root/tools/marvin/dist/ -name "Marvin*.tar.gz"`; \
pip install $MARVIN_FILE
EXPOSE 8080 8096
CMD ["/usr/bin/supervisord"]
整個 Dockerfile 最關(guān)鍵的是第二句 COPY 命令亿遂,把整個倉庫代碼丟進了容器中浓若。
所以部署數(shù)據(jù)中心也就很方便了:
docker exec -ti cloudstack python \
/root/tools/marvin/marvin/deployDataCenter.py -i /root/setup/dev/advanced.cfg
# or
docker exec -ti cloudstack python \
/root/tools/marvin/marvin/deployDataCenter.py -i /root/setup/dev/advancedsg.cfg
# or
docker exec -ti cloudstack python \
/root/tools/marvin/marvin/deployDataCenter.py -i /root/setup/dev/basic.cfg
部署 Cloudstack 管理節(jié)點(舊版)
運行數(shù)據(jù)庫:
docker run --name cloudstack-mysql -e MYSQL_ROOT_PASSWORD=password -d mysql
運行管理節(jié)點:
docker run -ti --name cloudstack --link cloudstack-mysql:mysql -d -p 8080:8080 -p 8250:8250 cloudstack/management_centos6
本文源代碼:
https://github.com/apache/cloudstack/tree/master/tools/docker