openstack云平台搭建与管理

五、云计算平台基础环境准备

 openstack软件仓库

 mount 镜像地址 挂载地址
        vi /etc/fstab(永久挂载)
            /opt/openstack/openStack-train.iso  /mnt/openstack   iso9660   defaults   0 0
        openstack yum源
            cd /etc/yum.repos.d
            vi centos-openstack.repo
                [virt]
                    name=virt
                    baseurl=file:///mnt/openstack/virt/
                    enabled=1
                    gpgcheck=0

                [base]
                    name=base
                    baseurl=file:///mnt/openstack/base/
                    enabled=1
                    gpgcheck=0

                [extras]
                    name=extras
                    baseurl=file:///mnt/openstack/extras/
                    enabled=1
                    gpgcheck=0

                [updates]
                    name=updates
                    baseurl=file:///mnt/openstack/updates/
                    enabled=1
                    gpgcheck=0

                [train]
                    name=train
                    baseurl=file:///mnt/openstack/train
                    enabled=1
                    gpgcheck=0
        yum clean all
        yum makecache
        yum repolist

#永久挂载
vi /etc/fstab
    /opt/openstack    /mnt/openstack    iso9669    defaults     0    0
    #放置路径            挂载路径        文件类型            
        服务端安装FTP服务器
#服务端安装ftp服务
yum install -y vsftpd
            vi /etc/vsftpd/vsftpd.conf
                #加一行(/opt软件仓库所在位置)
                anon_root=/opt
            
#服务端与客户端均运行            
yum install -y net-tools
    安装chrony时间同步服务
#使用以下命令安装chrony:
yum install chrony -y

#开启服务
systemctl start chronyd
systemctl enable chronyd

systemctl命令用于控制系统服务。start选项启动服务,enable选项设置开机自启。
配置chrony服务,

#编辑chrony配置文件/etc/chrony.conf:
vi /etc/chrony.conf
#在文件中找到server配置项,将其更改为国内可用的NTP服务器。例如,可将其更改为阿里云的NTP服务器:
#iburst选项表示在与服务器同步时进行快速启动。
server ntp.aliyun.com iburst

#重启服务
systemctl restart chronyd

#检查chrony服务是否正常运行:
systemctl status chronyd
如果服务已经成功启动并在运行中,会显示Active: active (running)。

#检查系统时间是否已经与NTP服务器同步:
chronyc tracking
#如果系统时间已经与NTP服务器同步,则会显示类似以下内容的输出:
Reference ID    : 7F7F0101 ()
Stratum         : 3
Ref time (UTC)  : Fri Oct 22 17:59:14 2021
System time     : 0.000000002 seconds fast of NTP time
Last offset     : +0.000000036 seconds
RMS offset      : 0.000000036 seconds
Frequency       : 2.815 ppm slow
Residual freq   : +0.000 ppm
Skew            : 0.001 ppm
Root delay      : 0.027991212 seconds
Root dispersion : 0.005167614 seconds
Update interval : 64.2 seconds
Leap status     : Normal

#Ref time (UTC)表示NTP服务器上的时间。
#System time表示本地系统时间与NTP服务器时间的差值。
#Last offset表示上一次与NTP服务器同步时的时间偏移值。
#RMS offset表示平均时间偏移值。
#Frequency表示本地系统时钟的频率与NTP服务器时钟的频率之间的差异,以PPM表示。
#其他参数表示网络延迟等性能指标。

    安装openstack云计算平台基础框架
yum install -y centos-release-openstack-train
yum upgrade
        #rm -rf /etc/yum.repos.d/C*.repo
yum install -y python-openstackclient
yum install -y openstack-selinux

    安装MariaDB数据库服务    
 yum install -y mariadb-server python2-PyMySQL
        vi /etc/my.cnf.d/openstack.cnf
            [mysqld]
                bind-address=hostip
                default-storage-engine=innodb
                innodb_file_per_table=on
                max_connections=4096
                collation-server=utf8_general_ci
                character-set-server=utf8
        mysql_secure_installation        #(初始化数据库)
        mysql -uroot -p password

    安装RabbitMQ消息队列服务
yum install -y rabbitmq-server
        systemctl enable rabbitmq-server
        systemctl start rabbitmq-server
        rabbitmqctl add_user rabbitmq 123456
        rabbitmqctl set_permissions rabbitmq".*"".*"".*"
        netstat -tnluo | grep 5672        #验证

    安装Memcached缓存服务
yum install -y memcached python-memcached
        vi /etc/sysconfig/memcached
            OPTIONS= -| hostip,::1,hostname    #修改
        systemctl enable memcached
        systemctl start memcached
        netstat -tnluo | grep 11211            #验证

    安装etcd分布式键值对存储系统

        yum install -y etcd
        vi /etc/etcd/etcd.conf
            # etcd配置文件  
  
            # etcd集群成员  
            ETCD_NAME=hostname  
            ETCD_ADVERTISE_CLIENT_URLS="http://(hostip):2379"  
            ETCD_INITIAL_ADVERTISE_PEER_URLS="HTTP://(HOSTIP):2380"
            ETCD_LISTEN_CLIENT_URLS="http://(hostip):2379"  
            ETCD_LISTEN_PEER_URLS="http://(hostip):2380"  
            ETCD_INITIAL_CLUSTER="hostname=http://(hostip):2380"
            ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
            ETCD_INITIAL_CLUSTER_STATE="new"
            # Raft一致性算法参数  
            #ETCD_RAFT_LOG_SIZE=536870912  
            #ETCD_RAFT_LOG_LIMIT=5242880  
            # 安全性配置  
            #ETCD_TLS=true  
            #ETCD_CERT_FILE="path/to/cert.pem"  
            #ETCD_KEY_FILE="path/to/key.pem"  
            #ETCD_CLIENT_CERT_AUTH=true  
            #ETCD_TRUSTED_CA_FILE="path/to/ca.pem"  
            #ETCD_AUTO_REJOIN_RETRIES=10  
            #ETCD_AUTO_REJOIN_DELAY=10


        systemctl enable etcd
        systemctl start etcd
        netstat -tnlup | grep etcd


六、认证服务(keystone)安装
  

#安装依赖包和Keystone服务
yum install -y openstack-keystone httpd mod_wsgi

#确认是否已经创建keystone用户组和用户
    cat /etc/passwd | grep keystone
    cat /etc/group | grep keystone
    
#创建Keystone所需的MySQL数据库和用户
    mysql -uroot -p123456
        create database keystone;
        grant all privileges on keystone.* to 'keystone'@'localhost' identified by '123456';
        grant all privileges on keystone.* to 'keystone'@'%' identified by '123456';

        quit;
        
#修改Keystone配置文件的数据库连接信息
    vi /etc/keystone/keystone.conf    #(修改以下)
        [database]
            connection = mysql+pymysql://keystone:123456@hostname/keystone    #582/600
        [token]
            provider = fernet    #2446/2475
   
#同步Keystone数据库
    su keystone -s /bin/sh -c "keystone-manage db_sync"
#查看数据库
    mysql -uroot -p123456
        use keystone;
        show tables;
        quit;
    
#设置Keystone Fernet        #令牌和凭据
    keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
    keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
    
#初始化用户身份认证
    keystone-manage bootstrap --bootstrap-password 123456 --bootstrap-admin-url http://server01:5000/v3 --bootstrap-internal-url http://server01:5000/v3 --bootstrap-public-url http://server01:5000/v3 --bootstrap-region-id RegionOne
    
#配置Apache服务
    ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/    #建立链接
    vi /etc/httpd/conf/httpd.conf
        #修改
          ServerName (hostip)
#启动Apache服务
    systemctl start httpd
    systemctl enable httpd
    
#创建初始化环境变量文件
    vi admin-login
        export OS_USERNAME=admin
        export OS_PASSWORD=123456
        export OS_PROJECT_NAME=admin
        export OS_USER_DOMAIN_NAME=Default
        export OS_PROJECT_DOMAIN_NAME=Default
        export OS_AUTH_URL=http://hostname:5000/v3
        export OS_IDENTITY_API_VERSION=3
        export OS_IMAGE_API_VERSION=2
        
#导入环境变量并查看
    source admin-login
    export -p
    
#创建项目、角色和域,并列出已有的项目、角色和域
    openstack project create --domain default project

    #openstack project list
    #openstack role create user
    #openstack role list
    #openstack domain list
    #openstack user list

    
七、镜像服务(Glance)安装

#安装glance软件包
yum install -y openstack-glance

#查看glance用户和组
    cat /etc/passwd | grep glance
    cat /etc/group | grep glance

#创建glance数据库
    mysql -uroot -p123456
        create database glance;
        grant all privileges on glance.* to 'glance'@'localhost' identified by '123456';
        grant all privileges on glance.* to 'glance'@'%' identified by '123456';

        quit;
    
 #备份并修改glance-api配置文件   
    cp /etc/glance/glance-api.conf     /etc/glance/glance-api.bak
    grep -Ev "^$|#" /etc/glance/glance-api.bak > /etc/glance/glance-api.conf

        #!@必须靠左不得有空格

        [database]
        connection = mysql+pymysql://glance:123456@hostname/glance
        [keystone_authtoken]
        auth_url = http://hostname:5000
        memcached_servers = hostname:11211
        auth_type = password
        project_domain_name = Default
        user_domain_name = Default
        project_name = project
        username = glance
        password = 123456    
        [paste_deploy]
        flavor = keystone
        [glance_store]
        stores = file
        default_store = file
        filesystem_store_datadir = /var/lib/glance/images/
    
#同步数据库
    su glance -s /bin/sh -c "glance-manage db_sync"
#查看数据库
    mysql -uroot -p123456
        use glance;
        show tables;

        quit;
  
#导入环境变量
    source admin-login

#创建glance用户和服务
    openstack user create --domain default --password 123456 glance
    openstack service create --name glance image
    openstack endpoint create --region RegionOne glance public http://hostname:9292
    openstack endpoint create --region RegionOne glance internal http://hostname:9292
    openstack endpoint create --region RegionOne glance admin http://hostname:9292
    
#启动glance-api服务
    systemctl start openstack-glance-api
    systemctl enable openstack-glance-api
    
    
#检查服务状态和端口监听情况
    netstat -tnlup | grep 9292
    systemctl status openstack-glance-api
   

#例子 
#创建镜像并查看镜像列表
    openstack image create --file 镜像地址 --disk-format qcow2 --container-format bare --public cirros(镜像名称)
    openstack image list
    
    
    #openstack user list
    #openstack domain list 
    #openstack role list
    #openstack endpoint list
    #ll /var/lib/glance/images/


    
八、放置服务(Placement)安装

#安装 openstack-placement-api  
yum install -y openstack-placement-api        
  
#查看 placement 用户和组
    cat /etc/passwd | grep placement
    cat /etc/group | grep placement

#创建 placement 数据库,并授权
    mysql -uroot -p123456
        create database placement;
        grant all privileges on placement.* to 'placement'@'hostname' identified by '123456';
        grant all privileges on placement.* to 'placement'@'%' identified by '123456';
        quit

#备份并编辑 placement 配置文件
    cp /etc/placement/plancement.conf     /etc/placement/plancement-conf.bak
    grep -Ev "^$|#" /etc/plancement/placement.conf.bak > /etc/placement/plancement.conf

#配置 keystone 认证
    vi /etc/placement/placement.conf
        
        [DEFAULT]
        [api]
        auth_strategy = keystone

        [cors]
        [keystone_authtoken]
        auth_url = http://server:5000
        memcached_servers = server:11211
        auth_type = password
        project_domain_name = Default
        user_domain_name = Default
        project_name = project
        username = placement
        password = 123456

        [oslo_policy]
        [placement]
        [placement_database]
        connection = mysql+pymysql://placement:123456@server01/placement
        [profiler]
        
#配置 apache
    vi /etc/httpd/conf.d/00-placement-api.conf 
   
    #!@在<VirtualHost *:8778>中添加,报错则删
      #  <Directory /usr/bin>
      #    Require all granted
      #  </Directory>
       <\VirtualHost>
       
#同步数据库
    su placement -s /bin/sh -c "placement-manage db sync" 
    mysql -uroot -p123456
    use placement;
    show tables;
    
#导入环境变量
    source admin-login

#创建 keystone 用户和角色,并分配权限
    openstack user create --domain default --password 123456 placement
    openstack role add --project project --user placement admin
    
#创建服务和端点
    openstack service create --name placement placement
    openstack endpoint create --region RegionOne placement public http://hostname:8778
    openstack endpoint create --region RegionOne placement internal http://hostname:8778
    openstack endpoint create --region RegionOne placement admin http://hostname:8778

#重启 apache 并查看端口
    systemctl restart httpd
    netstat -tnlup | grep 8778

#测试端口是否正常
    curl http://hostname:8778



九、计算服务(Nova)安装

#安装nova软件包
	yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-scheduler openstack-nova-novncproxy
	cat /etc/passwd | grep nova	#查看用户信息
	cat /etc/group | grep nova	#查看用户组信息
	
	mysql -uroot -p123456	#进入数据库
		#创建三个数据库
		create database nova_api;			
		create database nova_cell0;
		create database nova;
		#授予“nova”用户从本地和远程管理数据库的权限
		grant all privileges on nova_api.* to 'nova'@'localhost' identified by '123456';
		grant all privileges on nova_api.* to 'nova'@'%' identified by '123456';
		grant all privileges on nova_cell0.* to 'nova'@'localhost' identified by '123456';
		grant all privileges on nova_cell0.* to 'nova'@'%' identified by '123456';
		grant all privileges on nova.* to 'nova'@'localhost' identified by '123456';
		grant all privileges on nova.* to 'nova'@'%' identified by '123456';
		
		quit;
	#备份配置文件
	cp /etc/nova/nova.conf  /etc/nova/nova.bak
	#去除空行和注释
	grep -Ev "^$|#" /etc/nova/nova.bak > /etc/nova/nova.conf

	#进入主配置文件
    #向左靠齐勿有空格
	vi /etc/nova/nova.conf
		[api_database]												#与nova_api数据库连接
			connection = mysql+pymysql://nova:123456@hostname/nova_api
		[database]													#与nova数据库连接
			connection = mysql+pymysql://nova:123456@hostname/nova
		[api]														#与keystone交互
			auth_strategy = keystone
		[keystone_authtoken]										#与keystone交互
			auth_url = http://hostname:5000
			memcached_servers = hostname:11211
			auth_type = password
			project_domain_name = Default
			user_domain_name = Default
			project_name = project
			username = nova
			password = 123456
		[placement]													#与placement交互
			auth_url = http://hostname:5000
			auth_type = password
			project_domain_name = Default
			user_domain_name = Default
			project_name = project
			username = placement
			password = 123456
			region_name = RegionOne
		[glance]													#与glance交互
			api_server = http://hostname:9292
		[oslo_concurrency]											#为OpenStack代码块提供线程及进程锁
			lock_path = /var/lib/nova/tmp
		[DEFAULT]													#配置使用消息队列及防火墙信息
			enabled_apis = osapi_compute,metadata
			transport_url = rabbit://rabbitmq:123456@hostname:5672
			my_ip = (hostip)
			use_neturon = true
			firewall_dirver = nova.virt.firewall.NoopFirewallDriver
		[vnc]														#配置VCN连接方式
			enabled = true
			server_listen = $my_ip
			server_proxyclient_address = $my_ip
		

    #初始化nova数据库
	su nova -s /bin/sh -c "nova-manage api_db sync"					
	su nova -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1"
	su nova -s /bin/sh -c "nova-manage cell_v2 map_cell0"
	su nova -s /bin/sh -c "nova-manage db sync"
	
    #验证:获得已注册的单元列表
	nova-manage cell_v2 list_cells		
	
	
#nova组件初始化
    #导入环境变量
	source admin-login	
    #在OpenStack平台创建nova用户,密码123456										    
	openstack user create --domain default --password 123456 nova	
	openstack role add --project project --user nova admin
	
    #创建名为nova类型为compute的服务
	openstack service create --name nova compute	
	#公众用户访问端点
	openstack endpoint create --region RegionOne nova public http://hostname:8774/v2.1
	#内部组件访问端点
	openstack endpoint create --region RegionOne nova internal http://hostname:8774/v2.1
	#admin用户访问端点
	openstack endpoint create --region RegionOne nova admin http://hostname:8774/v2.1
	
	#启动并设置开机启动
	systemctl start openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
	systemctl enable openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
	
	netstat -nutpl | grep 877			#查看端口占用(8774,8775)
	openstack compute service list		#查看计算服务列表
	
	#安装客户端Nova服务
		yum install -y openstack-nova-compute
		cat /etc/passwd | grep nova
		cat /etc/group | grep nova
		
	cp /etc/nova/nova.conf  /etc/nova/nova.bak
	grep -Ev "^$|#" /etc/nova/nova.bak > /etc/nova/nova.conf
	vi /etc/nova/nova.conf	
		[api]
			auth_strategy = keystone
		[keystone_authtoken]
			auth_url = http://hostname:5000
			memcached_servers = hostname:11211
			auth_type = password
			project_domain_name = Default
			user_domain_name = Default
			project_name = project
			username = nova
			password = 123456	
		[placement]
			auth_url = http://hostname:5000
			auth_type = password
			project_domain_name = Default
			user_domain_name = Default
			project_name = project
			username = placement
			password = 123456
			region_name = RegionOne	
		[glance]
			api_server = http://hostname:9292
		[oslo_concurrency]
			lock_path = /var/lib/nova/tmp	
		[DEFAULT]
			enabled_apis = osapi_compute,metadata
			transport_url = rabbit://rabbitmq:123456@hostname:5672
			my_ip = (客户端ip)
			use_neturon = true
			firewall_dirver = nova.virt.firewall.NoopFirewallDriver	
		[vnc]
			enabled = true
			server_listen = 0.0.0.0
			server_proxyclient_address = $my_ip
			novncproxy_base_url = http://(server-ip):6080/vnc_auto.html
		[libvirt]
			virt_type = qemu
			
	systemctl start libvirtd openstack-nova-compute		
	systemctl enable libvirtd openstack-nova-compute	
	
	
	#发现客户端并检验服务(服务端执行)
		source admin-login
		su nova -s /bin.sh -c "nova-manage cell_v2 discover_hosts --verbose"
	#设置自动发现
		vi /etc/novs.novs.conf
			[scheduler]
				discover_hosts_in_cells_interval = 60
				
				systemctl restart openstack-nova-api		#重启nova-api服务
		
		#验证
			opensatck compute service list		#查看计算服务列表
			openstack catalog list				#查看OpenStack现有服务及服务对应的端点列表
			nova-status upgrade check			#

十、网络服务(Neutron)服务安装

十一、仪表盘服务(Dashboard)安装

十二、块存储服务(Cinder)安装
        

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是基于ansible部署OpenStack数据库服务器的步骤: 1. 在Ansible控制节点上安装OpenStack-Ansible: ``` git clone https://github.com/openstack/openstack-ansible.git cd openstack-ansible scripts/bootstrap-ansible.sh ``` 2. 编辑`/etc/ansible/hosts`文件,添加数据库服务器主机: ``` [galera_all] db1 ansible_host=db1.example.com db2 ansible_host=db2.example.com db3 ansible_host=db3.example.com [galera_primary] db1 [galera_nodes] db1 db2 db3 ``` 3. 复制`/usr/share/openstack-ansible-ops/galera_server/inventory/group_vars/all.yml.sample`文件为`/etc/ansible/group_vars/galera_all.yml`,并编辑该文件: ``` openstack_release: "{{ openstack_release | default('master') }}" galera_bootstrap: true galera_bootstrap_master_address: "{{ galera_primary_address }}" ``` 4. 复制`/usr/share/openstack-ansible-ops/galera_server/inventory/group_vars/galera_primary.yml.sample`文件为`/etc/ansible/group_vars/galera_primary.yml`,并编辑该文件: ``` galera_primary_address: "{{ hostvars[inventory_hostname]['ansible_host'] }}" ``` 5. 复制`/usr/share/openstack-ansible-ops/galera_server/inventory/group_vars/galera_nodes.yml.sample`文件为`/etc/ansible/group_vars/galera_nodes.yml`,并编辑该文件: ``` galera_bind_address: "{{ hostvars[inventory_hostname]['ansible_host'] }}" ``` 6. 创建Ansible playbook,例如`deploy-galera.yml`: ``` - name: Deploy Galera hosts: galera_all become: true vars: galera_password: "my_password" roles: - galera_server ``` 7. 运行Ansible playbook: ``` ansible-playbook deploy-galera.yml ``` 以上就是基于ansible部署OpenStack数据库服务器的步骤。需要注意的是,这里使用了OpenStack-Ansible进行部署,如果您使用的是其他部署方式,则具体步骤可能会有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值