一、准备一台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(说明:里面的netmask、network、gateway需要根据实际情况修改,可以查看同局域网其它电脑的相关参数。注意:这个配置针对双网卡接网线的那张网卡是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用户nova、glance、keystone和数据库)
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 [email protected]
$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云上。