首页 文章 精选 留言 我的

精选列表

搜索[小微模型],共10000篇文章
优秀的个人博客,低调大师

Android微信下JS报错:无对象

1.1.1 现象 发布新版本到服务器上后,点击一个按钮总是不执行相应的操作,将控制台信息输出出来后发现提示信息说没有找到相应的对象。 按钮的代码中调用了一个函数,这个函数在另外一个JS文件中,是新版本中增加的。因为是在Android手机上,没法联机调试,于是通过alert逐步定位,发现新加的函数确实没有。再通过链接打开对应的JS文件查看,发现确实也没有新增的函数,可是检查服务器上的JS文件,其内容是正确的。 另外,这个问题只在Android手机上出现,在iPhone下没有这个问题。 1.1.2 原因 在网上搜索,发现是Android下使用了缓存的JS文件,因为在HTML的Header中没有设置相应meta参数,导致Android下没有更新JS文件。 1.1.3 解决 强制Android刷新JS/CSS文件有两种方法: 方法一,设定Meta参数,强制不使用缓存 <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 这种方法适用于开发阶段,或开发、测试服务器上,对于生产环境不太适合,因为不使用缓存,终端用户的性能会受到影响。 方法二,为需要更新的CSS/JS文件链接后面增加版本号参数,这样Android客户端会认为是新的文件: <script src="/js/invitation.js?v=20150625"></script> 这种方法适用于生产环境。 本文转自 tywali 51CTO博客,原文链接:http://blog.51cto.com/lancelot/1774914,如需转载请自行联系原作者

优秀的个人博客,低调大师

第二十七周微职位

一、概述docker容器虚拟化技术,并完成以下练习: (1)构建一个基于centos的httpd镜像,要求,其主目录路径为/web/htdocs,且主页存在,并以apache用户的身份运行,暴露80端口; (2)进一步地,其页面文件为主机上的卷; (3)进一步地,httpd支持解析php页面; (4)构建一个基于centos的maridb镜像,让容器间可互相通信; (5)在httpd上部署wordpress; 1)创建带Apache服务的Centos Docker镜像. 基础镜像: [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE sshd-centos latest 64136bdc0cc8 22 hours ago 261.8 MB centos latest 0f73ae75014f 5 weeks ago 172.3 MB 2)以镜像sshd-centos为基础新建容器,并指定容器的ssh端口22映射到宿主机的10022端口上 docker run -p 10022:22 -d sshd-centos /usr/sbin/sshd -D 3)查看容器运行情况: [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 66b4ab8dbdeb sshd-centos "/usr/sbin/sshd -D" 22 hours ago Up 12 seconds 0.0.0.0:10022->22/tcp trusting_morse 4)在宿主机上通过ssh登录容器 ssh localhost -p 10022 5)如果提示没有ssh命令请安装openssh-clients yum install -y openssh-clients 6)下载apache源码包,编译安装 1.安装wget:yum install -y wget 2.下载源码包:cd /usr/local/src wgethttp://apache.fayea.com/httpd/httpd-2.4.17.tar.gz 3.解压源码包:tar -zxvf httpd-2.4.17.tar.gz cd httpd-2.4.17 4.安装gcc 、make编译器和apache依赖包 由于下载的docker镜像是简化版,所以连最基本的gcc和make都没有带,只好自已安装; 同时需 要安装apache依赖包apr 和 pcre yum install -y gcc make apr-devel apr apr-util apr-util-devel pcre-devel 5.编译:./configure --prefix=/usr/local/apache2 --enable-mods-shared=most --enable-so make make install 6.修改apache配置文件 sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/g' /usr/local/apache2/conf/httpd.conf 7.启动apache服务:/usr/local/apache2/bin/httpd 8.查看是否启动:ps aux 9.编写启动ssh和apache服务的脚本 cd /usr/local/sbin vi run.sh ------------------------------------------------------ #!/bin/bash /usr/sbin/sshd & /usr/local/apache2/bin/httpd -D FOREGROUND 改变脚本权限,使其可以运行:chmod 755 run.sh 10.创建带有apache和ssh服务的镜像 1)查看当前容器的 Container ID: [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 66b4ab8dbdeb sshd-centos "/usr/sbin/sshd -D" 23 hours ago Up 45 minutes 0.0.0.0:10022->22/tcp trusting_morse 2)根据容器CONTAINER ID生成新的镜像:docker commit 66b4ab8dbdeb apache:centos 3)查看新生成的镜像: [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE apache centos 31668185b8f1 About a minute ago 433.4 MB sshd-centos latest 64136bdc0cc8 23 hours ago 261.8 MB centos latest 0f73ae75014f 5 weeks ago 172.3 MB 11.根据新生成的镜像生成容器 分别映射容器的22端口和80端口到宿主机的2222端口和8000端口 docker run -d -p 2222:22 -p 8000:80 apache:centos /usr/local/sbin/run.sh 查看生成的容器: [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7a9021c9b510 apache:centos "/usr/local/sbin/run 4 minutes ago Up 4 minutes 0.0.0.0:2222->22/tcp, 0.0.0.0:8000->80/tcp tender_payne 66b4ab8dbdeb sshd-centos "/usr/sbin/sshd -D" 23 hours ago Up 57 minutes 0.0.0.0:10022->22/tcp trusting_morse 6c40d0d2d8be centos "/bin/bash" 23 hours ago Exited (137) 23 hours ago centos-ssh 12.测试apache服务:[root@localhost ~]# curl localhost:8000&lt;html&gt;&lt;body&gt;&lt;h1&gt;It works!&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt; 13.测试ssh服务 [root@localhost ~]#ssh localhost -p 2222 root@localhost's password: Last login: Sat Nov 13 14:20:41 2017 from 172.17.42.1 [root@7a9021c9b510 ~]# 测试通过! 14.映射宿主机目录 将宿主机的/www目录映射到容器的/usr/local/apache2/htdocs目录 1)在宿主机上新建目录并建立主页文件 mkdir /www cd /www vi index.html 代码如下:&lt;html&gt;&lt;body&gt;&lt;h1&gt;It's test!&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt; 为了区别于之前生成的8000端口的容器的默认主页内容,我将“It works” 改为 “It’s test”. 2)生成新的窗口 docker run -d -p 2223:22 -p 8001:80 -v /www:/usr/local/apache2/htdocs:ro apache:centos /usr/local/sbin/run.sh 分别映射容器的22端口和80端口到宿主机的2223端口和8001端口; 通过-v 参数将/www映射到/usr/local/apache2/htdocs,同时出于安全性和隔离性的考虑加上ro只读参数 3)查看生成的容器: [root@localhost www]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bd8335195b44 apache:centos "/usr/local/sbin/run 9 minutes ago Up 9 minutes 0.0.0.0:2223->22/tcp, 0.0.0.0:8001->80/tcp cranky_nobel 7a9021c9b510 apache:centos "/usr/local/sbin/run 21 minutes ago Up 21 minutes 0.0.0.0:2222->22/tcp, 0.0.0.0:8000->80/tcp tender_payne 66b4ab8dbdeb sshd-centos "/usr/sbin/sshd -D" 23 hours ago Up About an hour 0.0.0.0:10022->22/tcp trusting_morse 6c40d0d2d8be centos "/bin/bash" 24 hours ago Exited (137) 23 hours ago centos-ssh 4)测试: [root@localhost www]# curl localhost:8001&lt;html&gt;&lt;body&gt;&lt;h1&gt;It's test!&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt; [root@localhost www]# curl localhost:8000&lt;html&gt;&lt;body&gt;&lt;h1&gt;It works!&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt; 事例2: 容器导入和导出: docker export docker import 镜像的保存及装载: docker save -o /PATH/TO/SOMEFILE.TAR NAME[:TAG] docker load -i /PATH/FROM/SOMEFILE.TAR 回顾: Dockerfile指令: FROM,MAINTAINER COPY,ADD WORKDIR, ENV USER VOLUME EXPOSE RUN CMD,ENTRYPOINT ONBUILD Dockerfile(2) 示例2:httpd FROM centos:latest MAINTAINER MageEdu "<mage@magedu.com>" RUN sed -i -e 's@^mirrorlist.repo=os.$@baseurl=http://mirrors.163.com/centos/$releasever/@g' -e '/^mirrorlist.repo=updates/a enabled=0' -e '/^mirrorlist.repo=extras/a enabled=0' /etc/yum.repos.d/CentOS-Base.repo && \ yum -y install httpd php php-mysql php-mbstring && \ yum clean all && \ echo -e '<?php\n\tphpinfo();\n?>' > /var/www/html/info.php EXPOSE 80/tcp CMD ["/usr/sbin/httpd","-f","/etc/httpd/conf/httpd.conf","-DFOREGROUND"] 二、搭建一套hadoop集群系统。 1、首先到官网上下载一个Hadoop的压缩安装包,我安装用的版本是hadoop-2.7.1.tar.gz,由于我安装的是最新的版本,和Hadoop之前的版本有很大的差异,所以网上很多的教程都不适用,这也是导致在安装过程中遇到问题所在,下载地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz 2、下载完成后(这个压缩包比较大,有201M,下载比较慢,耐心等待吧),放到Linux某个目录下,这里我用的系统是:CentOS release 6.5 (Final),我放的目录是:/usr/local/jiang/hadoop-2.7.1.tar.gz,然后执行:tar zxvf hadoop-2.7.1.tar.gz解压(这些操作都是要在集群中的主机上进行,也就是hadoop的master上面) 3、配置host文件 进入/etc/hosts,配置主机名和ip的映射, 这里是集群的每个机子都需要配置,这里我的logsrv02是主机(master),其余两台是从机(slave) [root@logsrv03 /]# vi /etc/hosts 172.17.6.142 logsrv02 172.17.6.149 logsrv04 172.17.6.148 logsrv03 4、jdk的安装(这里我的机子上面已经有了,所以就不需要再安装了) 我使用的jdk是jdk1.7.0_71,没有的需要安装,将jdk下载下来,解压到某个目录下,然后到/etc/profile中配置环境变量,在执行Java -version验证是否安装成功。 5、配置SSH免密码登陆 这里所说的免密码登录是相对于主机master来说的,master和slave之间需要通信,配置好后,master和slave进行ssh登陆的时候不需要输入密码。 如果系统中没有ssh的需要安装,然后执行: [root@logsrv03 ~]# ssh-keygen -t rsa 会在根目录下生成私钥id_rsa和公钥id_rsa.pub [root@logsrv03 /]# cd ~ [root@logsrv03 ~]# cd .ssh [root@logsrv03 .ssh]# ll 总用量 20 -rw------- 1 root root 1185 11月 10 14:41 authorized_keys -rw------- 1 root root 1675 11月 2 15:57 id_rsa -rw-r--r-- 1 root root 395 11月 2 15:57 id_rsa.pub 然后将这里的公钥分别拷贝到其余slave中的.ssh文件中,然后要把公钥(id_dsa.pub)追加到授权的key中去: cat id_rsa.pub >> authorized_keys 然后修改权限 [root@logsrv04 .ssh]# chmod 600 authorized_keys [root@logsrv04 .ssh]# chmod 700 -R .ssh 将生成的公钥复制到从机上的.ssh目录下: [root@logsrv03 .ssh]# scp -r id_rsa.pub root@logsrv02:~/.ssh/ [root@logsrv03 .ssh]# scp -r id_rsa.pub root@logsrv04:~/.ssh/ 然后所有机子都需要重启ssh服务 [root@logsrv03 .ssh]# service sshd restart [root@logsrv02 .ssh]# service sshd restart [root@logsrv04 .ssh]# service sshd restart 然后验证免密码登陆是否成功,这里在主机master这里验证: [root@logsrv03 .ssh]# ssh logsrv02 [root@logsrv03 .ssh]# ssh logsrv04 如果在登陆slave不需要输入密码,则免密码登陆设置成功。 6、开始安装Hadoop,配置hadoop环境变量/etc/profile(所有机子都需要配置) export HADOOP_HOME=/usr/local/jiang/hadoop-2.7.1 export PATH= HADOOP_HOME/bin 7、修改配置文件: (1)、修改hadoop-2.7.1/etc/hadoop/hadoop-env.sh [root@logsrv03 /]# cd usr/local/jiang/hadoop-2.7.1 [root@logsrv03 hadoop-2.7.1]# cd etc/hadoop/ [root@logsrv03 hadoop]# vi hadoop-env.sh export JAVA_HOME=/usr/local/jdk1.7.0_71 (2)、修改hadoop-2.7.1/etc/hadoop/slaves [root@logsrv03 hadoop]# vi slaves logsrv02 logsrv04 (3)、修改hadoop-2.7.1/etc/hadoop/core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://logsrv03:8020</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/opt/hadoop/tmp</value> </property> <property> <name>fs.hdfs.impl</name> <value>org.apache.hadoop.hdfs.DistributedFileSystem</value> <description>The FileSystem for hdfs: uris.</description> </property> <property> <name>fs.file.impl</name> <value>org.apache.hadoop.fs.LocalFileSystem</value> <description>The FileSystem for hdfs: uris.</description> </property> </configuration> (4)、修改hadoop-2.7.1/etc/hadoop/hdfs-site.xml <configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration> (5)、修改hadoop-2.7.1/etc/hadoop/yarn-site.xml <configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.address</name> <value>logsrv03:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>logsrv03:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>logsrv03:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>logsrv03:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>logsrv03:8088</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration> (6)、修改hadoop-2.7.1/etc/hadoop/mapred-site.xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>logsrv03:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>logsrv03:19888</value> </property> </configuration> 8、这些配置文件配置完毕后,然后将整个hadoop-2.7.1文件复制到各个从机的目录下,这里目录最好与主机一致 [root@logsrv03 hadoop-2.7.1]# scp -r hadoop-2.7.1 root@logsrv02:/usr/local/jiang/ [root@logsrv03 hadoop-2.7.1]# scp -r hadoop-2.7.1 root@logsrv04:/usr/local/jiang/ 9、到这里全部配置完毕,然后开始启动hadoop,首先格式化hdfs [root@logsrv03 hadoop-2.7.1]# bin/hdfs namenode -format 如果出现successfully formatted则表示格式化成功。 10、然后启动hdfs [root@logsrv03 hadoop-2.7.1]# sbin/start-dfs.sh 到这里,可以查看启动的进程: 主机logsrv03: [root@logsrv03 hadoop-2.7.1]# jps 29637 NameNode 29834 SecondaryNameNode 从机logsrv02、logsrv04: [root@logsrv02 hadoop-2.7.1]# jps 10774 DataNode [root@logsrv04 hadoop-2.7.1]# jps 20360 DataNode 11、启动yarn [root@logsrv03 hadoop-2.7.1]# sbin/start-yarn.sh 到这里,启动的进程: 主机logsrv03: [root@logsrv03 hadoop-2.7.1]# jps 29637 NameNode 29834 SecondaryNameNode 30013 ResourceManager 从机logsrv02、logsrv04: [root@logsrv02 hadoop-2.7.1]# jps 10774 DataNode 10880 NodeManager [root@logsrv04 hadoop-2.7.1]# jps 20360 DataNode 20483 NodeManager 到这里,恭喜整个集群配置完成,可以通过:http://logsrv03:8088/cluster查看hadoop集群图: 查看HDFS:可以通过:http://logsrv03:50070查看 本文转自xinrenbaodao 51CTO博客,原文链接:http://blog.51cto.com/11832904/2044235,如需转载请自行联系原作者

优秀的个人博客,低调大师

第二十六周微职位

1、请描述openstack、kvm、qemu-kvm、libvirt及xen之间的关系。 KVM是最底层的hypervisor,它是用来模拟CPU的运行,它缺少了对network和周边I/O的支持,所以我们是没法直接用它的。QEMU-KVM就是一个完整的模拟器,它是建基于KVM上面的,它提供了完整的网络和I/O支持. Openstack不会直接控制qemu-kvm,它会用一个叫libvit的库去间接控制qemu-lvm, libvirt提供了夸VM平台的功能,它可以控制除了QEMU的模拟器,包括vmware, virtualbox xen等等。所以为了openstack的夸VM性,所以openstack只会用libvirt而不直接用qemu-kvm。libvirt还提供了一些高级的功能,例如pool/vol管理。 2、创建一套openstack-M版云主机 当前openstack的各个组件及功能 Dashboard(Horizon): 通过提供了web服务实现openstack服务的交互,比如创建实例,配置IP以及配置访问控制。 Compute(Nova): 在系统环境中管理整个生态圈的计算。承担着经过请求后的孵化,调度和回收虚拟机等一系列的责任,是核心组件,可以说是真正实现的角色。 Networking(Neutron): 提供了网络服务,连接起了其他服务。为用户提供API去定义网络并将它们联系起来。支持多种网络供应商和新兴的网络技术,比如vxlan等。 Object Storage(Swift):通过了RESTful API来存储和检索任务非结构化的数据对象,对数据同步和横向扩展有很高的容错性,不是挂载文件目录形势的使用方式,它是将对象和文件写入多个驱动程序以确保数据在服务器集群中的完整性。 Block(Cinder): 提供了块存储和持久化,可插拔式的体系架构简化了创建和管理存储设备。 Identity(Keystone): 提供openstack服务的验证和授权功能。为全部服务提供了访问接口。 Image service(Glance): 提供虚拟磁盘设备的镜像和检索服务,在计算实例时以供使用。 Telemetry(Ceilometer): 可扩展的服务,提供了监控、测量、计费、统计等功能。 Orchestration(Heat): 通过组合模板来进行的服务。 Database service(Trove): 为关系数据库和非关系数据库提供可扩展和可依赖的云数据库服务。 Data processing(Sahara service): 属于openstack的大数据项目。是openstack与hadoop的融合。 [openstack环境准备] 软件:vmareworkstation 11 操作系统:CentOS7 3.10.0-327.e17.x86_64 2台:一台作为控制节点controller,一台作为计算节点compute。 基本设置: 每一个都选择2张网卡,一张对外提供服务,需要连接互联网,可以是桥接或者nat模式。一张提供内部网络,作为openstack内部联系的网络,在VMware选择host only模式。 修改对应的主机名,并在hosts做主机与IP的解析, 做时间同步,可以是本地,也可以是时间服务器,在centos7中改为chrony,调整完毕后设置开机启动。 注!:方便起见,把防火墙和selinux全部关闭,确保网络畅通。 到这一步,基本上的环境配置就搞定了。 [openstack基本安装] 在centos上默认包含openstack版本,可以直接用yum安装最新的版本不用费力去寻找相关的源码包。 [root@ceshiapp_2~]# yum install centos-release-openstack-mitaka.noarch -y 安装openstack客户端 [root@ceshiapp_2~]# yum install -y python-openstackclient openstack自带有openstack-selinux来管理openstack服务之间的安装性能,这里,为了实验顺利,这里选择忽略,实际情况可以根据需求选择是否安装。 注!:如没有特殊说明以下安装说明都是在controller中执行。 [数据库及nosql安装] [root@controller~]yum install mariadb mariadb-server python2-PyMySQL #yum安装数据库,用于到时候创建服务的数据库 port:3306 [root@controller~]mysql_secure_installation #安全配置向导,包括root密码等。 [root@controllermy.cnf.d]# vim openstack.cnf [mysqld] bind-address= 0.0.0.0 #这个地址表示能够让所有的地址能远程访问。 default-storage-engine= innodb innodb_file_per_table max_connections= 4096 collation-server= utf8_general_ci character-set-server= utf8 #修改配置文件,定义字符集和引擎,其他可按需修改。 这是yum安装的数据库,是mariadb是兼容mysql的,也可以选择源码编译安装,安装过程这里不详细讲了。 MariaDB[(none)]> grant all on.to root@'%' identified by "root" ; 这里先添加远程登录的root用户。 [root@controllermy.cnf.d]# yum install -y mongodb-server mongodb 安装mongodb数据库,提高web访问的性能。Port:27017 [root@controllermy.cnf.d]# vim /etc/mongod.conf bind_ip = 192.168.10.200 #将IP绑定在控制节点上。 ...... [root@controllermy.cnf.d]# systemctl enable mongod.service Createdsymlink from /etc/systemd/system/multi-user.target.wants/mongod.service to/usr/lib/systemd/system/mongod.service. [root@controllermy.cnf.d]# systemctl start mongod.service 设置开机自启动。 [root@controllermy.cnf.d]#yum install memcached python-memcached [root@controllermy.cnf.d]# systemctl enable memcached.service Createdsymlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service. [root@controllermy.cnf.d]# systemctl start memcached.service 安装memcached并设置开机启动。Port:11211 memcache用于缓存tokens [rabbitmq消息队列安装与配置] 为了保持openstack项目松耦合,扁平化架构的特性,因此消息队列在整个架构中扮演了交通枢纽的作用,所以消息队列对openstack来说是必不可少的。不一定适用RabbitMQ,也可以是其他产品。 [root@controllermy.cnf.d]# yum install -y rabbitmq-server [root@controllermy.cnf.d]# systemctl enable rabbitmq-server.service Createdsymlink from/etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to/usr/lib/systemd/system/rabbitmq-server.service. [root@controllermy.cnf.d]# systemctl start rabbitmq-server.service [root@controllermy.cnf.d]# rabbitmqctl add_user openstack openstack Creatinguser "openstack" ... [root@controllermy.cnf.d]# rabbitmqctl set_permissions openstack "." "."".*" Settingpermissions for user "openstack" in vhost "/" ... #安装rabbidmq,创建用户并设置允许读写操作。 [Identity service—keystone] 接下来是openstack第一个验证服务——keystone服务安装,它为项目管理提供了一系列重要的验证服务和服务目录。openstack的其他服务安装之后都需要再keystone进行验证过,之后能够跟踪所有在局域网内安装好的openstack服务。 安装keystone之前先配置好数据库环境。 [root@controller~]# mysql -uroot -p MariaDB[(none)]> CREATE DATABASE keystone; QueryOK, 1 row affected (0.00 sec) MariaDB[(none)]> grant all on keystone.* to keystone@localhost identified by'keystone'; QueryOK, 0 rows affected (0.09 sec) MariaDB[(none)]> grant all on keystone.* to keystone@'%' identified by'keystone'; QueryOK, 0 rows affected (0.00 sec) MariaDB[(none)]> flush privileges; QueryOK, 0 rows affected (0.05 sec) #生成admin tokens [root@controller~]# openssl rand -hex 10 bc6aec97cc5e93a009b1 安装keystone httpd wsgi WSGI是Web Server Gateway Interface的缩写,是python定义的web服务器或者框架的一种接口,位于web应用程序和web服务器之间。 [root@controller~]# yum install -y openstack-keystone httpd mod_wsgi 修改keystone配置文件 [root@controller~]# vim /etc/keystone/keystone.conf [default] [DEFAULT] admin_token= bc6aec97cc5e93a009b1 #这里填之前生成的admintokens [database] ...... connection= mysql+pymysql://keystone:keystone@controller/keystone [token] ...... provider= fernet #控制tokens验证、建设和撤销的操作方式 [root@controller~]# sh -c "keystone-manage db_sync" keystone #设置数据库同步 [root@controller~]# keystone-manage fernet_setup --keystone-user keystone --keystone-groupkeystone #生成fernetkeys [root@controller~]# vim /etc/httpd/conf/httpd.conf #修改配置文件 ServerAdmincontroller 接下来配置虚拟主机 [root@controller~]# vim /etc/httpd/conf.d/wsgi-keystone.conf WSGIScriptAlias //usr/bin/keystone-wsgi-public WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLogFormat "%{cu}t %M" ErrorLog /var/log/httpd/keystone-error.log CustomLog/var/log/httpd/keystone-access.log combined <Directory /usr/bin> Require all granted </Directory> </VirtualHost> <VirtualHost*:35357> WSGIDaemonProcess keystone-adminprocesses=5 threads=1 user=keystone group=keystone display-na me=%{GROUP} WSGIProcessGroup keystone-admin WSGIScriptAlias //usr/bin/keystone-wsgi-admin WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLogFormat "%{cu}t %M" ErrorLog /var/log/httpd/keystone-error.log CustomLog/var/log/httpd/keystone-access.log combined <Directory /usr/bin> Require all granted </Directory> </VirtualHost> 设置开机自启动。 [root@controller~]# systemctl enable httpd.service [root@controller~]# systemctl start httpd.service 配置上述生成的admin token [root@controller~]# export OS_TOKEN=bc6aec97cc5e93a009b1 配置endpoint URL [root@controller~]# export OS_URL=http://controller:35357/v3 Identity 版本 [root@controller~]# export OS_IDENTITY_API_VERSION=3 创建identity service 。 [root@controller~]# openstack service create --namekeystone --description "OpenStack Identity" identity 验证服务管理着openstack项目中所有服务的API endpoint,服务之间的相互联系取决于验证服务中的API endpoint。根据用户不同,它提供了三种形式的API endpoint,分别是admin、internal、public。admin默认允许管理用户和租户,internal和public不允许管理用户和租户。因为在openstack中一般都会设置为2张网卡,一张对外提供服务,一张是内部交互提供的网络,因此对外一般使用public API 能够使得用户对他们自己的云进行管理。Admin API 一般对管理员提供服务,而internal API 是针对用户对自己所使用opservice服务进行管理。因此一般一个openstack服务都会创建多个API,针对不用的用户提供不同等级的服务。 [root@controller~]# openstack endpoint create --region RegionOne identity publichttp://controller:5000/v3 [root@controller~]# openstack endpoint create --region RegionOne identity internalhttp://controller:5000/v3 [root@controller~]# openstack endpoint create --region RegionOne identity adminhttp://controller:35357/v3 接下来是创建默认的域、工程(租户)、角色、用户以及绑定。 [root@controller~]# openstack domain create --description "Default Domain" default [root@controller~]# openstack project create --domain default \ --description "Admin Project"admin [root@controller~]# openstack user create --domain default --password-prompt admin UserPassword: RepeatUser Password:#密码admin [root@controller~]# openstack role add --project admin --user admin admin 对demo工程、用户、角色进行绑定。 [root@controller~]# openstack project create --domain default --description "Service Project" service [root@controller~]# openstack project create --domain default \ --description "Demo Project" demo [root@controller~]# openstack user create --domain default --password-prompt demo UserPassword: RepeatUser Password: #demo [root@controller~]# openstack role add --project demo --user demo user 测试验证服务是否安装有效。 1.在keystone-paste.ini中的这3个字段中删除admin_token_auth [root@controller~]# vim /etc/keystone/keystone-paste.ini [pipeline:public_api] ......admin_token_auth [pipeline:admin_api] ...... [pipeline:api_v3] ...... 2.删除刚才设置的OS_token和OS_URL Unset OS_TOKEN OS_URL 然后开始验证,没报错说明成功了。 [root@controller~]# openstack --os-auth-urlhttp://controller:35357/v3\ --os-project-domain-name default--os-user-domain-name default \ --os-project-name admin --os-username admintoken issue Password:#admin 验证demo用户: [root@controller~]# openstack --os-auth-urlhttp://controller:5000/v3\ --os-project-domain-name default--os-user-domain-name default \ --os-project-name demo --os-username demotoken issue Password:#demo 最后创建user脚本 export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=admin export OS_AUTH_URL=http://controller:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2 这里如果是多个台服务器配置的话。这样的脚本就会方便你配置管理员的API。主要还是起到了方便的作用。 [Image service—glance] 依旧先创建数据库以及相关用户。 [root@controller~]# mysql -u root -p MariaDB[(none)]> CREATE DATABASE glance; QueryOK, 1 row affected (0.04 sec) MariaDB[(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \ -> IDENTIFIED BY 'glance'; QueryOK, 0 rows affected (0.28 sec) MariaDB[(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \ -> IDENTIFIED BY 'glance'; QueryOK, 0 rows affected (0.01 sec) MariaDB[(none)]> flush privileges; QueryOK, 0 rows affected (0.08 sec) [root@controller~]# . admin-openrc注!如果在其他服务器上就需要执行这个脚本,来配置admin api 接来下创建glance用户以及绑定。 [root@controller~]# openstack user create --domain default --password-prompt glance UserPassword: RepeatUser Password: #glance 将admin 角色增加到 service工程和 glance用户。 [root@controller~]# openstack role add --project service --user glance admin [root@controller~]# openstack service create --name glance \ --description "OpenStack Image"image 创建image服务的三种接口 [root@controller~]# openstack endpoint create --region RegionOne \ image publichttp://controller:9292 [root@controller~]# openstack endpoint create --region RegionOne \ image internalhttp://controller:9292 [root@controller~]# openstack endpoint create --region RegionOne image adminhttp://controller:9292 安装openstack-glance并修改配置文件 [root@controller~]# yum install -y openstack-glance [root@controller~]# vim /etc/glance/glance-api.conf [database] ...... connection= mysql+pymysql://glance:glance@controller/glance [keystone_authtoken] ... auth_uri=http://controller:5000 auth_url=http://controller:35357 memcached_servers= controller:11211 auth_type= password project_domain_name= default user_domain_name= default project_name= service username= glance password= glance ...... [paste_deploy] ... flavor= keystone [glance_store] ... stores= file,http default_store= file filesystem_store_datadir= /var/lib/glance/images/ [root@controller~]# vim /etc/glance/glance-registry.conf [database] ...... connection= mysql+pymysql://glance:glance@controller/glance [keystone_authtoken] ... auth_uri=http://controller:5000 auth_url=http://controller:35357 memcached_servers= controller:11211 auth_type= password project_domain_name= default user_domain_name= default project_name= service username= glance password= glance ...... [paste_deploy] ... flavor= keystone 做数据库同步。输出信息忽略。 [root@controller ~]# su -s /bin/sh -c "glance-managedb_sync" glance Option"verbose" from group "DEFAULT" is deprecated forremoval. Its value may be silentlyignored in the future. /usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:1056:OsloDBDeprecationWarning: EngineFacade is deprecated; please useoslo_db.sqlalchemy.enginefacade expire_on_commit=expire_on_commit,_conf=conf) /usr/lib/python2.7/site-packages/pymysql/cursors.py:146:Warning: Duplicate index 'ix_image_properties_image_id_name' defined on thetable 'glance.image_properties'. This is deprecated and will be disallowed in afuture release. result = self._query(query) 开机启动。 [root@controller~]# systemctl enable openstack-glance-api.service \ openstack-glance-registry.service Createdsymlink from/etc/systemd/system/multi-user.target.wants/openstack-glance-api.service to/usr/lib/systemd/system/openstack-glance-api.service. Createdsymlink from /etc/systemd/system/multi-user.target.wants/openstack-glance-registry.serviceto /usr/lib/systemd/system/openstack-glance-registry.service. [root@controller~]# systemctl start openstack-glance-api.service \ openstack-glance-registry.service 下载一个镜像并创建,然后可以list查看是否成功。 [root@controller~]wgethttp://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img [root@controller~]# openstack image create "cirros" \ --file cirros-0.3.4-x86_64-disk.img \ --disk-format qcow2 --container-format bare\ --public 镜像active成功。 [root@controller~]# openstack image list +--------------------------------------+--------+--------+ |ID | Name | Status | +--------------------------------------+--------+--------+ |7f715e8d-6f29-4e78-ab6e-d3b973d20cf7 | cirros | active | +--------------------------------------+--------+--------+ [Compute-service nova] 依旧为计算服务创建数据库。这里要为nova创建2个数据库。 MariaDB[(none)]> CREATE DATABASE nova_api;CREATE DATABASE nova; QueryOK, 1 row affected (0.09 sec) QueryOK, 1 row affected (0.00 sec) MariaDB[(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \ -> IDENTIFIED BY 'nova'; QueryOK, 0 rows affected (0.15 sec) MariaDB[(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova'; QueryOK, 0 rows affected (0.00 sec) MariaDB[(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova'; QueryOK, 0 rows affected (0.00 sec) MariaDB[(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova'; QueryOK, 0 rows affected (0.00 sec) 创建用户并绑定admin角色 [root@controller~]# . admin-openrc [root@controller~]# openstack user create --domain default --password-prompt nova UserPassword: RepeatUser Password: #nova [root@controller~]# openstack role add --project service --user nova admin 创建nova计算服务。 [root@controller~]# openstack service create --name nova \ --description "OpenStack Compute"compute 创建nova的api。 [root@controller~]# openstack endpoint create --region RegionOne \ compute publichttp://controller:8774/v2.1/%\(tenant_id\)s [root@controller~]# openstack endpoint create --region RegionOne compute internalhttp://controller:8774/v2.1/%(tenant_id)s [root@controller~]# openstack endpoint create --region RegionOne compute adminhttp://controller:8774/v2.1/%(tenant_id)s 安装nova组件。 [root@controller~]# yum install -y openstack-nova-api openstack-nova-conductor \ openstack-nova-consoleopenstack-nova-novncproxy \ openstack-nova-scheduler 修改配置文件,修改内容比较多,需要仔细比对一下。 [root@controller~]# vim /etc/nova/nova.conf [default] ...... enabled_apis= osapi_compute,metadata rpc_backend=rabbit auth_strategy=keystone my_ip=192.168.10.200# 设置内网IP use_neutron=true#支持网络服务 firewall_driver=nova.virt.libvirt.firewall.NoopFirewallDriver [api_database] connection=mysql+pymysql://nova:nova@controller/nova_api [database] ...... connection=mysql+pymysql://nova:nova@controller/nova [oslo_messaging_rabbit] ...... rabbit_host= controller rabbit_userid= openstack rabbit_password= openstack #之间创建的密码。 [keystone_authtoken] ...... auth_uri=http://controller:5000 auth_url=http://controller:35357 memcached_servers= controller:11211 auth_type= password project_domain_name= default user_domain_name= default project_name= service username= nova password= nova #之前创建的用户密码 [vnc] ...... vncserver_listen= $my_ip vncserver_proxyclient_address= $my_ip [glance] ....... api_servers=http://controller:9292 [oslo_concurrency] ...... lock_path= /var/lib/nova/tmp 同步数据库,忽略输出。 [root@controller~]# su -s /bin/sh -c "nova-manage api_db sync" nova [root@controller~]# su -s /bin/sh -c "nova-manage db sync" nova 设置开机启动。 systemctlenable openstack-nova-api.service \ openstack-nova-consoleauth.serviceopenstack-nova-scheduler.service \ openstack-nova-conductor.serviceopenstack-nova-novncproxy.service #systemctl start openstack-nova-api.service \ openstack-nova-consoleauth.serviceopenstack-nova-scheduler.service \ openstack-nova-conductor.serviceopenstack-nova-novncproxy.service 配置compute节点 [root@compute ~]# yum install -ycentos-release-openstack-mitaka #否则直接安装openstack-nova-compute失败 [root@compute ~]# yum install -y openstack-nova-compute 修改配置文件 [root@compute~]# vim /etc/nova/nova.conf [DEFAULT] ...... rpc_backend= rabbit auth_strategy= keystone my_ip=192.168.10.201 firewall_driver=nova.virt.libvirt.firewall.NoopFirewallDriver use_neutron=true [glance] ...... api_servers=http://controller:9292 [keystone_authtoken] ...... auth_uri=http://controller:5000 auth_url=http://controller:35357 memcached_servers= controller:11211 auth_type= password project_domain_name= default user_domain_name= default project_name= service username= nova password= nova [libvirt] ...... virt_type=qemu#egrep -c '(vmx|svm)' /proc/cpuinfo 如果显示为0 则需要修改成qemu [oslo_concurrency] lock_path=/var/lib/nova/tmp [oslo_messaging_rabbit] ...... rabbit_host= controller rabbit_userid= openstack rabbit_password= openstack [vnc] ...... enabled=true vncserver_listen=0.0.0.0 vncserver_proxyclient_address=$my_ip novncproxy_base_url=http://controller:6080/vnc_auto.html 然后设置开机自启动。 systemctlenable libvirtd.service openstack-nova-compute.service systemctlstart libvirtd.service openstack-nova-compute.service 验证结果,在compute上操作。4个up为ok [root@compute~]# . admin-openrc [root@compute~]# openstack compute service list +----+------------------+------------+----------+---------+-------+----------------------------+ | Id |Binary | Host | Zone | Status | State | Updated At | +----+------------------+------------+----------+---------+-------+----------------------------+ | 1 | nova-conductor | controller | internal | enabled | up | 2016-08-16T14:30:42.000000 | | 2 | nova-scheduler | controller | internal | enabled | up | 2016-08-16T14:30:33.000000 | | 3 | nova-consoleauth | controller | internal| enabled | up |2016-08-16T14:30:39.000000 | | 6 | nova-compute | compute | nova | enabled | up |2016-08-16T14:30:33.000000 | +----+------------------+------------+----------+---------+-------+----------------------------+ [Network service—neutron ] Neutron最主要是功能是负责虚拟环境下的网络,但它之前并不叫neutron,是叫quantum,因为被注册然后才改名的。网络在openstack中最复杂的功能,配置也是最繁琐的,从官方文档中单独把网络向导列出来写一大篇文章就可以看出来。从L1到L7都有所涉及,openstack所有的服务都是通过网络练习起来。像glance一样,neutron本身并提供网络服务,它的大部分功能都是通过Plugin提供的,除了DHCP和L3-agent,这些信息在配置服务的过程中能体现出来。 Neutron本身有2种模式,一种是provider networks,指的是运营商提供网络,可以说是外网,还有一种是Self-service networks,这是私人网络,可以说内网,但是第二种网络模式包含第一种,所以基本上都会选择第二种部署方式,对外提供服务用外网,对内使用内网,因此部署openstack一般都会使用2张网卡。 在controller上配置数据库,赋权等操作。 [root@controller~]# mysql -u root -p MariaDB[(none)]> CREATE DATABASE neutron; QueryOK, 1 row affected (0.09 sec) MariaDB[(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron'; QueryOK, 0 rows affected (0.36 sec) MariaDB[(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron'; QueryOK, 0 rows affected (0.00 sec) MariaDB[(none)]> flush privileges; QueryOK, 0 rows affected (0.09 sec) 创建neutron用户,将admin角色绑定到用户上。 [root@controller~]# openstack user create --domain default --password-prompt neutron UserPassword: RepeatUser Password: #neutron [root@controller~]# openstack role add --project service --user neutron admin 创建neutron网络服务以及三种API接口。 [root@controller~]# openstack service create --name neutron \ --description "OpenStackNetworking" network [root@controller~]# openstack endpoint create --region RegionOne \ network publichttp://controller:9696 [root@controller~]# openstack endpoint create --region RegionOne network internalhttp://controller:9696 [root@controller~]# openstack endpoint create --region RegionOne network adminhttp://controller:9696 网络配置,安装组件。 [root@controller~]# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y 修改neutron配置文件。 [root@controller~]# vim /etc/neutron/neutron.conf [default] core_plugin= ml2 service_plugins= router allow_overlapping_ips= True auth_strategy=keystone rpc_backend=rabbit notify_nova_on_port_status_changes= True notify_nova_on_port_data_changes= True [database] ...... connection= mysql+pymysql://neutron:neutron@controller/neutron [keystone_authtoken] ...... auth_uri=http://controller:5000 auth_url=http://controller:35357 memcached_servers= controller:11211 auth_type= password project_domain_name= default user_domain_name= default project_name= service username= neutron password= neutron [nova] ...... auth_url=http://controller:35357 auth_type= password project_domain_name= default user_domain_name= default region_name= RegionOne project_name= service username= nova password= nova [oslo_concurrency] ...... lock_path= /var/lib/neutron/tmp 修改ML2配置文件 [root@controller~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini [ml2] ...... type_drivers= flat,vlan,vxlan tenant_network_types= vxlan mechanism_drivers= linuxbridge,l2population extension_drivers= port_security [ml2_type_flat] ...... flat_networks= provider [ml2_type_vxlan] ... vni_ranges= 1:1000 [securitygroup] ... enable_ipset= True 设置桥接代理配置文件。 [root@controller~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini [linux_bridge] ...... physical_interface_mappings=provider:eno33554984#内网网卡 [vxlan] ...... enable_vxlan= true local_ip= 192.168.10.200 #controller ip l2_population= true [securitygroup] ...... enable_security_group= true firewall_driver=neutron.agent.linux.iptables_firewall.IptablesFirewallDriver 修改Layer-3 代理配置文件。 [root@controller~]# vim /etc/neutron/l3_agent.ini [DEFAULT] ...... interface_driver= neutron.agent.linux.interface.BridgeInterfaceDriver external_network_bridge= 修改DHCP代理配置文件。 [root@controller~]# vim /etc/neutron/dhcp_agent.ini [DEFAULT] ...... interface_driver= neutron.agent.linux.interface.BridgeInterfaceDriver dhcp_driver= neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true 修改元数据代理配置文件。 vim/etc/neutron/metadata_agent.ini [DEFAULT] ...... nova_metadata_ip= controller metadata_proxy_shared_secret= meta #元数据共享的一个密码,之后会用到。 在nova配置文件中修改neutron的参数。 [root@controller~]# vim /etc/nova/nova.conf [neutron] ...... url =http://controller:9696 auth_url=http://controller:35357 auth_type= password project_domain_name= default user_domain_name= default region_name= RegionOne project_name= service username= neutron password= neutron service_metadata_proxy= True metadata_proxy_shared_secret= meta 设置软连接 [root@controller~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini 同步数据库。 [root@controllerneutron]# su -s /bin/sh -c "neutron-db-manage --config-file/etc/neutron/neutron.conf \ --config-file /etc/neutron/plugins/ml2/ml2_conf.iniupgrade head" neutron 出现OK成功。 重启nova-api服务 [root@controllerneutron]# systemctl restart openstack-nova-api.service 设置开机启动并启动neutron服务。 #systemctl enable neutron-server.service \ neutron-linuxbridge-agent.serviceneutron-dhcp-agent.service \ neutron-metadata-agent.service #systemctl enable neutron-l3-agent.service #systemctl start neutron-server.service \ neutron-linuxbridge-agent.serviceneutron-dhcp-agent.service \ neutron-metadata-agent.service #systemctlstart neutron-l3-agent.service 配置完控制节点,配置compute节点的网络服务。 [root@compute~]# yum install -y openstack-neutron-linuxbridge ebtables ipset 修改neutron配置文件 [root@compute~]# vim /etc/neutron/neutron.conf [DEFAULT] rpc_backend= rabbit auth_strategy= keystone [keystone_authtoken] ...... auth_uri=http://controller:5000 auth_url=http://controller:35357 memcached_servers= controller:11211 auth_type= password project_domain_name= default user_domain_name= default project_name= service username= neutron password= neutron [oslo_concurrency] ..... lock_path= /var/lib/neutron/tmp [oslo_messaging_rabbit] rabbit_host= controller rabbit_userid= openstack rabbit_password= openstack 修改linux桥接代理的配置文件 [root@compute~]# vim /etc/neutron/plugins/ml2/linuxbridge.ini [linux_bridge] ...... physical_interface_mappings= provider:eno33554984 [securitygroup] ..... firewall_driver= neutron.agent.linux.iptables_firewall.IptablesFirewallDriver enable_security_group= true [vxlan] ...... enable_vxlan= true local_ip= 192.168.10.201 #内网IP l2_population= true 修改nova中neutron模块的配置信息。 [root@compute~]# vim /etc/nova/nova.conf [neutron] ...... url =http://controller:9696 auth_url=http://controller:35357 auth_type= password project_domain_name= default user_domain_name= default region_name= RegionOne project_name= service username= neutron password= neutron 重启compute服务。 #systemctlrestart openstack-nova-compute.service 设置neutron开机启动。 #systemctlenable neutron-linuxbridge-agent.service #systemctl start neutron-linuxbridge-agent.service 验证neutron服务,出现5个笑脸说明OK。 [root@controller~]# neutron agent-list +--------------+--------------+------------+-------------------+-------+----------------+---------------+ |id | agent_type | host | availability_zone | alive | admin_state_up | binary | +--------------+--------------+------------+-------------------+-------+----------------+---------------+ |7476f2bf- | DHCP agent | controller | nova | :-) | True | neutron-dhcp- | |dced-44d6-8a | | | | | | agent | |a0-2aab951b1 | | | | | | | |961 | | | | | | | |82319909-a4b | Linux bridge | compute | | :-) | True | neutron- | |2-47d9-ae42- | agent | | | | | linuxbridge- | |288282ad3972 | | | | | | agent | |b465f93f- | Metadata | controller | | :-) | True | neutron- | |90c3-4cde- | agent | | | | | metadata- | |949c- | | | | | | agent | |47c205a74f65 | | | | | | | |e662d628-327 | L3 agent | controller| nova | :-) | True | neutron-l3-ag | |b-4695-92e1- | | | | | | ent | |76da38806b05 | | | | | | | |fa84105f-d49 | Linux bridge | controller | | :-) | True | neutron- | |7-4b64-9a53- | agent | | | | | linuxbridge- | |3b1f074e459e | | | | | | agent | +--------------+--------------+------------+-------------------+-------+----------------+---------------+ [root@compute~]# neutron ext-list +---------------------------+-----------------------------------------------+ |alias | name | +---------------------------+-----------------------------------------------+ |default-subnetpools | DefaultSubnetpools | |network-ip-availability | Network IPAvailability | |network_availability_zone | Network Availability Zone | |auto-allocated-topology | AutoAllocated Topology Services | |ext-gw-mode | Neutron L3Configurable external gateway mode | |binding | PortBinding | |agent | agent | |subnet_allocation | SubnetAllocation | |l3_agent_scheduler | L3 AgentScheduler | |tag | Tagsupport | |external-net | Neutronexternal network | |net-mtu 至此完成部署。 本文转自xinrenbaodao 51CTO博客,原文链接:http://blog.51cto.com/11832904/2044171,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册