单节点双网卡安装openstack E版 (控制节点&&计算机点)以及镜像制作(自动联网)

来源:互联网 发布:java多线程框架有哪些 编辑:程序博客网 时间:2024/06/05 05:14

一、准备一台64位双网卡服务器(PC机)

二、首先检测CPU是否支持VT。

1)下载软件securable。多客户用SecurAble检测计算机是否支持VT。这款软件检测系统的三项技术:左边的是检测系统是否支持64位,中间的是是否支持硬件数据执行保护(也就是地址扩展),右边的是系统是否支持VT。在不同系统和不同的芯片组下会有各种不同的显示。

1、CPU和BIOS都不支持VT

右边显示红色的NO。


2、CPU不支持,BIOS支持

右边显示红色的Locked OFF!


3、CPU和BIOS都支持
右边显示绿色的Locked ON


4、其他显示
右边还会有显示绿色Yes的情况。

 

三、下载ubuntu12.04 server 64bit下载地址:http://www.ubuntu.com/download/server

四、下载nero刻盘工具,准备一张DVD空白光盘,把下载的iso镜像刻录到光盘。用于之后的光盘安装。nero下载地址:http://www.nero.com/chs/

五、安装ubuntu 12.04 server64bit

放入光盘,重启电脑,在启动的时候长按F12进入bios选择从光盘启动。之后常规安装。

注意事项:

1、  语言选择。推荐安装英文系统。选中文安装有时候装上了系统里面会出现方格显示不出字符(里面的不论中文英语字符都显示为方格)。如果已经选择安装了中文,并且最后系统里面出现方格显示不出字符,可以按照网上的办法修改/etc/default/locale修改回英文,但是显示汉字问题还是不能修复。所以不如直接英文安装。

2、  分区设定。Openstack里面nova-volume和swift都需要预先分出专门的区。因此如果要装这两个,就必须在装系统的时候预先给他们分区。

3、  网络设置。因为是双网卡安装,所以会有两块网卡,先搞清楚连着网线的是eth0还是eth1.做法是安装的时候让选择一块网卡dhcp,任意选择一块,若不能成功配置网络就换另一个网卡给dhcp,能成功配置网络就ok。

4、  安装软件包。最瘦安装,仅安装一个openssh。当然也可以在系统装完之后登录进系统用命令安装$ sudo apt-get install openssh-server。

5、  安装完成后开启系统,安装ssh,命令$sudoapt-get install openssh-server。如果说找不到包,先执行$sudo apt-get update。如果提示failed to fetch,检查一下网络可能不通。

6、  创建root密码以便之后用root登录操作。命令:

$sudo passwd root

(回车之后提示输入当前用户密码,然后在输两边设定的root密码)

之后就可以登录root了,用命令:

$su

六、安装openstack。

1、  下载一个putty,方便在另一台PC机上面远程操控服务器。Putty里面可以粘贴命令,而不用一个个字母去敲。下载地址:http://www.putty.org/

2、  在putty上面远程,如图在hostname填写服务器的IP地址,如我的是10.10.20.99,然后点击open。



3、  在putty连上的命令行里面将下面的命令一条一条地粘贴进去执行。

 

###configure the internal sources to get higher download speed(可选)

SOURCE_FILE=${SOURCE_FILE:-"/etc/apt/sources.list"}

cp$SOURCE_FILE $SOURCE_FILE.bak     (说明:备份原来的source.list,官方源也有版本匹配问题)

cat<<APT >$SOURCE_FILE

debhttp://debian.ustc.edu.cn/ubuntu/ precise main restricted universe multiverse

debhttp://debian.ustc.edu.cn/ubuntu/ precise-backports restricted universemultiverse

debhttp://debian.ustc.edu.cn/ubuntu/ precise-proposed main restricted universemultiverse

debhttp://debian.ustc.edu.cn/ubuntu/ precise-security main restricted universemultiverse

debhttp://debian.ustc.edu.cn/ubuntu/ precise-updates main restricted universemultiverse

deb-srchttp://debian.ustc.edu.cn/ubuntu/ precise main restricted universe multiverse

deb-srchttp://debian.ustc.edu.cn/ubuntu/ precise-backports main restricted universemultiverse

deb-srchttp://debian.ustc.edu.cn/ubuntu/ precise-proposed main restricted universemultiverse

deb-srchttp://debian.ustc.edu.cn/ubuntu/ precise-security main restricted universemultiverse

deb-srchttp://debian.ustc.edu.cn/ubuntu/ precise-updates main restricted universemultiverse

APT

 

###update and upgrade the system

apt-getupdate

apt-getupgrade

 

###configure the NIC,one NIC needed for controller node(说明:里面的netmasknetworkgateway需要根据实际情况修改,可以查看同局域网其它电脑的相关参数。注意:这个配置针对双网卡接网线的那张网卡是eth0的情况)

cat<<INTERFACES >/etc/network/interfaces

auto lo

iface loinet loopback

 

autoeth0

ifaceeth0 inet static

address$(/sbin/ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2 -d":")

hwaddressether $(/sbin/ifconfig | awk '/eth0/{print $1,$5}' | cut -f2 -d " ")

netmask255.255.255.0

network192.168.1.0

gateway192.168.1.1

dns-searchchenshake.com

dns-nameservers8.8.8.8

 

autoeth1

ifaceeth1 inet manual

upifconfig eth1 up

INTERFACES

 

/etc/init.d/networkingrestart

 

 

 

###install and configure the ntp server

apt-get-y install ntp

sed -i's/server ntp.ubuntu.com/server ntp.ubuntu.com\nserver 127.127.1.0\nfudge127.127.1.0 stratum 10/g' /etc/ntp.conf

servicentp restart

 

###install nova-volume(说明:此组件安装可选。并且安装前提是装系统是给nova-volume预分了一个分区,这段命令中对应分区名字是nova-volume

ZONE=$(df-h | grep /nova-volume | cut -f 1 -d ' ')

apt-get-y install tgt open-iscsi open-iscsi-utils

apt-get-y install lvm2

umount$ZONE

pvcreate$ZONE

vgcreatenova-volumes $ZONE

sed -i'/nova-volume/s/^/#/' /etc/fstab

 

###install bridge

apt-get-y install bridge-utils

/etc/init.d/networkingrestart

 

###install rabbitmq and memcached .etc

apt-getinstall -y rabbitmq-server memcached python-memcache kvm libvirt-bin curl

 

###configure the variables as you want(说明:此处设定了用户名和密码设定)

cat>/root/novarc <<EOF

exportOS_TENANT_NAME=admin

exportOS_USERNAME=admin

exportOS_PASSWORD=123456

exportMYSQL_PASS=123456

exportSERVICE_PASSWORD=123456

exportFIXED_RANGE=10.0.0.0/24

exportFLOATING_RANGE=$(/sbin/ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2-d ":" | awk -F "." '{print$1"."$2"."$3}').192/26

exportOS_AUTH_URL="http://localhost:5000/v2.0/"

export SERVICE_ENDPOINT="http://localhost:35357/v2.0"

exportSERVICE_TOKEN=$(openssl rand -hex 10)

exportMASTER="$(/sbin/ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2 -d":")"

EOF

sourcenovarc          (说明:这句让novarc生效)

echo"source novarc">>.bashrc        (说明:这句把novarc追加到.bashrc末尾,使每次root登录系统的时候执行.bashrc的时候也执行novarc生效。如果是非root用户登录了系统再切换到root下会报bash错误:找不到novarc这个文件,这个时候需要手动执行一遍 source使novarc生效)

 

###autoinstall mysql server(说明:设定了安装mysql的用户名密码,变量值在novarc中设定了)

cat<<MYSQL_PRESEED | debconf-set-selections

mysql-server-5.5mysql-server/root_password password $MYSQL_PASS

mysql-server-5.5mysql-server/root_password_again password $MYSQL_PASS

mysql-server-5.5mysql-server/start_on_boot boolean true

MYSQL_PRESEED

apt-getinstall -y mysql-server python-mysqldb

sed -i's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf

servicemysql restart

mysql-uroot -p$MYSQL_PASS <<EOF

CREATEDATABASE nova;               (创建了三个mysql用户novaglancekeystone和数据库)

GRANTALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '$MYSQL_PASS';

CREATEDATABASE glance;

GRANTALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '$MYSQL_PASS';

CREATEDATABASE keystone;

GRANTALL PRIVILEGES ON keystone.* TO 'keystone'@'%'IDENTIFIED BY '$MYSQL_PASS';

FLUSHPRIVILEGES;

EOF

 

### installphpmyadmin               (说明:phpmyadmin可以管理mysql

cat<<PHPmyadmin | debconf-set-selections

phpmyadminphpmyadmin/reconfigure-webserver text     apache2

phpmyadminphpmyadmin/dbconfig-install      boolean  true

phpmyadminphpmyadmin/app-password-confirm  password $MYSQL_PASS

phpmyadminphpmyadmin/mysql/admin-pass      password $MYSQL_PASS

phpmyadminphpmyadmin/password-confirm      password $MYSQL_PASS

phpmyadminphpmyadmin/setup-password        password $MYSQL_PASS

phpmyadminphpmyadmin/mysql/app-pass        password $MYSQL_PASS

PHPmyadmin

apt-get--no-install-recommends -yq install phpmyadmin

 

### 删除mysql匿名用户(edit by melina)(说明:删除mysql里面的匿名用户,避免出现nova等登录出现permission denied

# mysql-u root -p 123456

#mysql>use mysql;

# mysql>deletefrom user where user="";

#mysql>flush privileges;

 

###install keystone services

apt-getinstall -y keystone python-keystone python-keystoneclient

sed -i-e " s/admin_token = ADMIN/admin_token = $SERVICE_TOKEN/g"/etc/keystone/keystone.conf

sed -i'/connection =.*/{s|sqlite:///.*|mysql://'"keystone"':'"$MYSQL_PASS"'@'"$MASTER"'/keystone|g}'/etc/keystone/keystone.conf

servicekeystone restart

keystone-managedb_sync

wgethttp://www.chenshake.com/wp-content/uploads/2012/07/keystone_data.sh_.txt

mv keystone_data.sh_.txtkeystone_data.sh

bashkeystone_data.sh          (说明:该句只能执行一次,不能重复执行。执行了没有任何输出表示正确,或者输入命令 $echo $? 得到显示0就正确)

 

# if [$? != 0 ];then

# echo"keystone_data.sh run error,script will exit after 5s!"

# sleep5

# exit 1

# fi

 

wget http://www.chenshake.com/wp-content/uploads/2012/07/endpoints.sh_.txt

mvendpoints.sh_.txt endpoints.sh

bashendpoints.sh

 

# if [$? != 0 ];then

# echo"endpoints.sh run error,script will exit after 5s!"

# sleep5

# exit 1

# fi

 

###install glance services

apt-getinstall -y glance glance-api glance-client glance-common glance-registrypython-glance

sed -i-e " s/%SERVICE_TENANT_NAME%/service/g; s/%SERVICE_USER%/glance/g;s/%SERVICE_PASSWORD%/$SERVICE_PASSWORD/g; "/etc/glance/glance-api-paste.ini

sed -i-e " s/%SERVICE_TENANT_NAME%/service/g; s/%SERVICE_USER%/glance/g;s/%SERVICE_PASSWORD%/$SERVICE_PASSWORD/g; "/etc/glance/glance-registry-paste.ini

sed -i'/sql_connection =.*/{s|sqlite:///.*|mysql://'"glance"':'"$MYSQL_PASS"'@'"$MASTER"'/glance|g}'/etc/glance/glance-registry.conf

cat<<EOF >>/etc/glance/glance-api.conf

[paste_deploy]

flavor =keystone

EOF

cat<<EOF >>/etc/glance/glance-registry.conf

[paste_deploy]

flavor =keystone

EOF

serviceglance-api restart && service glance-registry restart

glance-manageversion_control 0

glance-managedb_sync

serviceglance-api restart && service glance-registry restart

 

###install nova services

apt-getinstall -y nova-api nova-cert nova-common nova-objectstore nova-schedulernova-volume nova-consoleauth novnc python-nova python-novaclient nova-computenova-compute-kvm  nova-network

sed -i-e " s/%SERVICE_TENANT_NAME%/service/g; s/%SERVICE_USER%/nova/g;s/%SERVICE_PASSWORD%/$SERVICE_PASSWORD/g; " /etc/nova/api-paste.ini

cat>/etc/nova/nova.conf <<EOF

[DEFAULT]

######LOGS/STATE

#verbose=True

verbose=False

 

######AUTHENTICATION

auth_strategy=keystone

 

######SCHEDULER

#--compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler

scheduler_driver=nova.scheduler.simple.SimpleScheduler

 

######VOLUMES

volume_group=nova-volumes

volume_name_template=volume-%08x

iscsi_helper=tgtadm

 

######DATABASE

sql_connection=mysql://nova:$MYSQL_PASS@$MASTER/nova

 

######COMPUTE

libvirt_type=kvm

#libvirt_type=qemu

connection_type=libvirt

instance_name_template=instance-%08x

api_paste_config=/etc/nova/api-paste.ini

allow_resize_to_same_host=True

libvirt_use_virtio_for_bridges=true

start_guests_on_host_boot=true          (说明:该句和下面一句控制nova服务重启的时候实例跟着重启)

resume_guests_state_on_host_boot=true

 

######APIS

osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions

allow_admin_api=true

s3_host=$MASTER

cc_host=$MASTER

 

######RABBITMQ

rabbit_host=$MASTER

 

######GLANCE

image_service=nova.image.glance.GlanceImageService

glance_api_servers=$MASTER:9292

 

######NETWORK

network_manager=nova.network.manager.FlatDHCPManager

force_dhcp_release=True

dhcpbridge_flagfile=/etc/nova/nova.conf

dhcpbridge=/usr/bin/nova-dhcpbridge

firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver

public_interface=eth0              (说明:连外网的网卡)

flat_interface=eth1                 (说明:用作云内)

flat_network_bridge=br100          (说明:桥的名称,记住制作镜像的时候需要)

fixed_range=$FIXED_RANGE

multi_host=true

 

######NOVNC CONSOLE

novnc_enabled=true

novncproxy_base_url=http://$MASTER:6080/vnc_auto.html

vncserver_proxyclient_address=$MASTER

vncserver_listen=$MASTER

 

########Nova

logdir=/var/log/nova

state_path=/var/lib/nova

lock_path=/var/lock/nova

 

#####MISC

use_deprecated_auth=false

root_helper=sudonova-rootwrap

EOF

chown -Rnova:nova /etc/nova

 

(说明:重启服务的时留意看看是不是每个服务都起来了)

servicelibvirt-bin restart

servicenova-scheduler restart

servicenova-network restart

servicenova-cert restart

servicenova-compute restart

servicenova-api restart

servicenova-objectstore restart

servicenova-volume restart

servicenovnc restart

servicenova-consoleauth restart

servicerabbitmq-server restart

 

nova-managedb sync        (说明:同步数据库)

 

###create fix_ip and floating_ip

nova-managenetwork create private --fixed_range_v4=$FIXED_RANGE --num_networks=1--bridge=br100 --bridge_interface=eth1 --network_size=256 --multi_host=T

nova-managefloating create --ip_range=$FLOATING_RANGE

 

servicelibvirt-bin restart

servicenova-scheduler restart

servicenova-network restart

servicenova-cert restart

servicenova-compute restart

servicenova-api restart

servicenova-objectstore restart

servicenova-volume restart

servicenovnc restart

servicenova-consoleauth restart

servicerabbitmq-server restart

 

###install dashboard

apt-getinstall -y apache2 libapache2-mod-wsgi openstack-dashboard

servicelibvirt-bin restart

servicenova-scheduler restart

servicenova-network restart

servicenova-cert restart

servicenova-compute restart

servicenova-api restart

servicenova-objectstore restart

service nova-volumerestart

servicenovnc restart

servicenova-consoleauth restart

servicerabbitmq-server restart

 

### showmessages about the login of dashboard

cat<<EOF >&1

loginthe dashboard:

address:http://$MASTER

user:admin

password:$OS_PASSWORD

BYE-BYE!!!

EOF

 

sleep 5

reboot

4、  登录dashboard。

在IE浏览器里面输入服务器的IP地址,如我的10.10.20.99 回车

5、  出来一个dashboard的登录界面,账号和密码在上面novarc文件里面定义了,如我的admin,123456.首次登录进去里面是空的因为还没有上传镜像,接下来上传镜像并创建实例。

6、  制作镜像(见最后)

7、  上传镜像。首先明确自己的镜像是什么格式的qcow2还是raw还是什么。

把镜像放到服务器的某个地方(若是windows系统下会用到工具winscp,下载地址http://winscp.net/eng/docs/lang:chs),比如我的放在跟目录下/root/ubuntu-12.10-desktop.img,并且我这个镜像是raw格式的,所以用以下命令上传到云,如果是qcow2格式改命令相应的地方:

$glance addname="Ubuntu-12.10-desktop" is_public=true container_format=ovf disk_format=raw< /root/ubuntu-12.10-desktop.img

如果上传出现没有验证授权什么的,keystone可能粗问题了,source一下novarc再传。

8、  创建实例。登录dashboard进行操作。完了虚拟机内外ping一下,看网络是否通。

七、制作镜像。(在server上装virt-manager而不需要在远程操作的机器上装)

1、  首先确认libvirt“default”的网络可用。

$ virsh net-list


然后$ virsh net-start default

2、  在服务器上面安装virt-manager

$apt-get install virt-manager

3、  在另一台PC机上ssh到服务器:

4、  $ssh –X root@10.10.20.99

$virt-manager

如果-X不管用就用-Y试试。之后会进入virt-manager的图形界面创建虚拟机:


5、  按提示创建虚拟机。

注意:1)网络选择default NAT

6、  安装镜像的操作系统。

按提示常规安装。

注意:1)语言还是推荐选英文吧。

2)分区整个全部做一个区Ext4格式。

7、  修改镜像的系统。

安装完成系统之后登录进去。需要做几点操作:

1)  更新系统

$sudo apt-get update

$sudo apt-get upgrade

2)  安装ssh

$sudo apt-get install openssh-server

 

3)   安装cloud-init

$sudo apt-get install cloud-init

4)  安装dhcp

$sudo apt-get install dhcp3-server

5)  修改interfaces

$sudo vi /etc/network/interfaces

在文件最下面添加两句:

auto eth0

iface eth0 inet dhcp

6)  删除70-persistent-net.rules

$sudo rm –rf /etc/udev/rules.d/70-persistent-net.rules

7)  关闭系统

$sudo shutdown –h now

8、  修改系统网络连接方式。

在virt-manager面板里面找到该镜像的info页面,修改网络连接方式将default NAT改成桥接,桥的名称为之前openstack设置好的br100。

9、  镜像手动创建结束。新建的镜像所在的目录是/var/lib/libvirt/images/

10、             把镜像上传到openstack云上。