{"id":157,"date":"2023-10-17T20:50:36","date_gmt":"2023-10-17T12:50:36","guid":{"rendered":"http:\/\/www.carnica.cn\/?p=157"},"modified":"2023-10-19T16:39:27","modified_gmt":"2023-10-19T08:39:27","slug":"openstack-%e9%a1%b9%e7%9b%ae%e5%ae%9e%e6%88%98%e6%89%8b%e5%86%8c","status":"publish","type":"post","link":"https:\/\/www.carnica.cn\/?p=157","title":{"rendered":"OpenStack \u9879\u76ee\u5b9e\u6218\u624b\u518c"},"content":{"rendered":"<p>[TOC]<\/p>\n<h2>\u5404\u7ec4\u4ef6\u529f\u80fd<\/h2>\n<p>OpenStack \u901a\u8fc7 Nova \u8c03\u7528 KVM\/XEN\/VMWARE \u7b49\u865a\u62df\u5316\u6280\u672f\u521b\u5efa\u865a\u62df\u673a\u3002 OpenStack \u662f\u4e00\u4e2a\u7ba1\u7406\u5e73\u53f0\u5bbd\u5047\uff0c\u652f\u6301\u4f17\u591a\u7684\u865a\u62df\u5316\u7ba1\u7406\uff0ccinder \u5b58\u50a8\u652f\u6301 GlusterFS\u3001ISCSI\u3001MFS \u7b49\u5b58\u50a8\u6280\u672f\u3002<\/p>\n<table>\n<thead>\n<tr>\n<th>\u670d\u52a1\u540d\u79f0<\/th>\n<th>\u9879\u76ee\u540d\u79f0<\/th>\n<th>\u8be6\u7ec6\u8bf4\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>dashboard<\/td>\n<td>Horizon<\/td>\n<td>\u57fa\u4e8eOpenStack API \u63a5\u53e3\u4f7f\u7528 django \u5f00\u53d1\u7684 web \u7ba1\u7406\u670d\u52a1<\/td>\n<\/tr>\n<tr>\n<td>compute<\/td>\n<td>Nova<\/td>\n<td>\u901a\u8fc7\u865a\u62df\u5316\u6280\u672f\u63d0\u4f9b\u865a\u62df\u673a\u8ba1\u7b97\u8d44\u6e90\u6c60<\/td>\n<\/tr>\n<tr>\n<td>networking<\/td>\n<td>Neutron<\/td>\n<td>\u5b9e\u73b0\u4e86\u865a\u62df\u673a\u7684\u7f51\u7edc\u8d44\u6e90\u7ba1\u7406\uff0c\u5373\u865a\u62df\u673a\u7f51\u7edc<\/td>\n<\/tr>\n<tr>\n<td>object storage<\/td>\n<td>Swift<\/td>\n<td>\u5bf9\u8c61\u5b58\u50a8\uff0c\u9002\u7528\u4e8e\u4e00\u6b21\u5199\u5165\u591a\u6b21\u8bfb\u53d6\u3002\u5982\uff1a\u56fe\u7247\u3001ISO\u955c\u50cf<\/td>\n<\/tr>\n<tr>\n<td>block storage<\/td>\n<td>Cinder<\/td>\n<td>\u5757\u5b58\u50a8\uff0c\u63d0\u4f9b\u5b58\u50a8\u8d44\u6e90\u6c60\uff0c\u4fdd\u5b58\u865a\u62df\u673a\u7684\u78c1\u76d8\u955c\u50cf\u7b49\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td>identity service<\/td>\n<td>Keystone<\/td>\n<td>\u63d0\u4f9b\u8d26\u6237\u767b\u5f55\u5b89\u5168\u8ba4\u8bc1<\/td>\n<\/tr>\n<tr>\n<td>image service<\/td>\n<td>Glance<\/td>\n<td>\u63d0\u4f9b\u865a\u62df\u955c\u50cf\u7684\u6ce8\u518c\u548c\u5b58\u50a8\u7ba1\u7406<\/td>\n<\/tr>\n<tr>\n<td>telemetry<\/td>\n<td>Ceilometer<\/td>\n<td>\u63d0\u4f9b\u76d1\u63a7\u548c\u6570\u636e\u91c7\u96c6\uff0c\u8ba1\u91cf\u670d\u52a1<\/td>\n<\/tr>\n<tr>\n<td>orchestra<\/td>\n<td>Heat<\/td>\n<td>\u81ea\u52a8\u5316\u7ec4\u4ef6\u7684\u90e8\u7f72<\/td>\n<\/tr>\n<tr>\n<td>database service<\/td>\n<td>Trove<\/td>\n<td>\u63d0\u4f9b\u6570\u636e\u5e93\u5e94\u7528\u670d\u52a1<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>\u7248\u672c\u8bf4\u660e<\/h2>\n<p>\u672c\u624b\u518c\u4ee5 ocata \u7248\u672c\u4e3a\u4f8b\u3002<\/p>\n<ul>\n<li><code>Alpha<\/code>\uff1a\u5185\u90e8\u6d4b\u8bd5\u7248<\/li>\n<li><code>Dev<\/code>\uff1a\u5728\u8f6f\u4ef6\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u5f00\u53d1\u8f6f\u4ef6\u7684\u4ee3\u53f7\uff0c\u76f8\u6bd4\u4e8e beta \u7248\uff0cdev \u7248\u672c\u53ef\u80fd\u51fa\u73b0\u7684\u66f4\u65e9<\/li>\n<li><code>Beta<\/code>\uff1a\u6d4b\u8bd5\u7248\uff0c\u8fd9\u4e2a\u9636\u6bb5\u7684\u7248\u672c\u4e00\u822c\u4f1a\u52a0\u5165\u65b0\u7684\u529f\u80fd\u3002<\/li>\n<li><code>RC<\/code>\uff08Release Candidate\uff09\uff1a\u53d1\u884c\u5019\u9009\u7248\u672c\uff0cRC\u7248\u4e0d\u4f1a\u518d\u52a0\u5165\u65b0\u529f\u80fd\uff0c\u4e3b\u8981\u7740\u91cd\u4e8e\u9664\u9519\u3002<\/li>\n<li><code>GA<\/code>\uff08General Availablity\uff09\uff1a\u6b63\u5f0f\u53d1\u5e03\u7684\u7248\u672c\u3002<\/li>\n<\/ul>\n<h2>\u5b89\u88c5\u51c6\u5907<\/h2>\n<h3>1. \u67e5\u770b OpenStack yum \u7248\u672c<\/h3>\n<pre><code>yum list centos-release-openstack*<\/code><\/pre>\n<h3>2. \u5b89\u88c5 yum \u6e90\uff08\u8d1f\u8f7d\u670d\u52a1\u3001\u6570\u636e\u5e93\u3001memcache\u3001rabbitMQ\u670d\u52a1\u5668\u9664\u5916\uff09<\/h3>\n<pre><code>yum install -y centos-release-openstack-ocata.noarch\nyum install -y https:\/\/rdoproject.org\/repos\/rdo-release.rpm<\/code><\/pre>\n<h3>3. \u5404\u670d\u52a1\u5668\u5b89\u88c5 OpenStack \u5ba2\u6237\u7aef\u3001SElinux\u7ba1\u7406\u5305<\/h3>\n<pre><code>yum install -y python-openstackclient\nyum install -y openstack-selinux<\/code><\/pre>\n<h3>4. \u5b89\u88c5\u6570\u636e\u5e93<\/h3>\n<p>openstack \u5404\u7ec4\u4ef6\u90fd\u8981\u4f7f\u7528\u6570\u636e\u5e93\u4fdd\u5b58\u6570\u636e\uff0c\u9664\u4e86 nova \u4f7f\u7528 API \u4e0e\u5176\u4ed6\u7ec4\u4ef6\u8fdb\u884c\u8c03\u7528\u3002<\/p>\n<pre><code>yum install -y mariadb python2-PyMySQL    #\u7528\u4e8e\u63a7\u5236\u7aef\u8fde\u63a5\u6570\u636e\u5e93\nyum install -y mariadb-server     #\u5b89\u88c5\u6570\u636e\u5e93<\/code><\/pre>\n<h3>5. \u914d\u7f6e\u6570\u636e\u5e93<\/h3>\n<pre><code>## vim \/etc\/my.cnf.d\/openstack.cnf\n[mysqld]\nbind-address = 192.168.10.204  #\u6307\u5b9a\u76d1\u542c\u5730\u5740\ndefault-storage-engine = innodb    #\u9ed8\u8ba4\u5f15\u64ce\ninnodb_file_per_table = on    #\u5f00\u542f\u6bcf\u4e2a\u8868\u90fd\u6709\u72ec\u7acb\u8868\u7a7a\u95f4\nmax_connections = 4096        #\u6700\u5927\u8fde\u63a5\u6570\ncollation-server = utf8_general_ci        #\u4e0d\u533a\u5206\u5927\u5c0f\u5199\u6392\u5e8f\ncharacter-set-server = utf   #\u8bbe\u7f6e\u7f16\u7801<\/code><\/pre>\n<p>\u914d\u7f6e <code>\/etc\/my.cnf<\/code><\/p>\n<pre><code>[mysqld]\nsocket=\/var\/lib\/mysql\/mysql.sock\nuser=mysql\nsymbolic-links=0\ndatadir=\/data\/mysql\ninnodb_file_per_table=1\n#skip-grant-tables\nrelay-log=\/data\/mysql\nserver-id=10\nlog-error=\/data\/mysql-log\/mysql_error.txt\nlog-bin=\/data\/mysql-binlog\/master-log\n#general_log=ON\n#general_log_file=\/data\/general_mysql.log\nlong_query_time=5\nslow_query_log=1\nslow_query_log_file=\/data\/mysql-log\/slow_mysql.txt\nmax_connections=10000\nbind-address=192.168.10.204\n\n[client]\nport=3306\nsocket=\/var\/lib\/mysql\/mysql.sock\n\n[mysqld_safe]\nlog-error=\/data\/mysql-log\/mysqld-safe.log\npid-file=\/var\/lib\/mysql\/mysql.sock<\/code><\/pre>\n<h3>6. \u521b\u5efa\u6570\u636e\u76ee\u5f55\u5e76\u6388\u6743<\/h3>\n<pre><code>mkdir -pv \/data\/{mysql,mysql-log,mysql-binlog}\nchown -R mysql.mysql \/data\/<\/code><\/pre>\n<h3>7. \u542f\u52a8 MariaDB \uff0c\u5e76\u9a8c\u8bc1<\/h3>\n<h3>8. \u5b89\u88c5 keepalived<\/h3>\n<pre><code>wget http:\/\/www.keepalived.org\/software\/keepalived-1.3.6.tar.gz\ntar xf keepalived-1.3.6.tar.gz\ncd keepalived-1.3.6\nyum install libnfnetlink-devel libnfnetlink ipvsadm libnl libnl-devel libnl3 libnl3-devel lm_sensors-libs net-snmp-agent-libs net-snmp-libs openssh-server openssh-clients openssl openssl-devel tree sudo psmisc lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute\n.\/configure --prefix=\/usr\/local\/keepalived --disable-fwmark &amp;&amp; make &amp;&amp; make install\ncp \/usr\/loca\/src\/keepalived-1.3.6\/keepalived\/etc\/init.d\/keepalived.rh.init \/etc\/sysconfig\/keepalived.sysconfig\ncp \/usr\/local\/src\/keepalived-1.3.6\/keepalived\/keepalived.service \/usr\/lib\/systemd\/system\/\ncp \/usr\/local\/src\/keepalived-1.3.6\/bin\/keepalived \/usr\/sbin\/<\/code><\/pre>\n<h3>9. \u51c6\u5907 keepalived \u914d\u7f6e\u6587\u4ef6<\/h3>\n<p>master\u670d\u52a1\u5668\uff1a<code>vim \/etc\/keepalived\/keepalived.conf<\/code><\/p>\n<pre><code>vrrp_instance VI_1 {\n    state MASTER\n    interface eth0\n    virtual_router_id 1\n    priority 100\n    advert_int 1\n    unicast_src_ip 192.168.10.204\n    unicast_peer {\n        192.168.10.205\n    }\n\n    authentication {\n        auth_type PASS\n        auth_pass 123456\n    }\n    virtual_ipaddress {\n        192.168.10.100\/24 dev eth0 label eth0:0\n    }\n}<\/code><\/pre>\n<p>backup\u670d\u52a1\u5668\uff1a<code>vim \/etc\/keepalived\/keepalived.conf<\/code><\/p>\n<pre><code>vrrp_instance VI_1 {\n    state BACKUP\n    interface eth0\n    virtual_router_id 1\n    priority 50\n    advert_int 1\n    unicast_src_ip 192.168.10.205\n    unicast_peer {\n        192.168.10.204\n    }\n\n    authentication {\n        auth_type PASS\n        auth_pass 123456\n    }\n    virtual_ipaddress {\n        192.168.10.100\/24 dev eth0 label eth0:0\n    }\n}<\/code><\/pre>\n<h3>10. \u542f\u52a8\u5e76\u9a8c\u8bc1keepalived<\/h3>\n<pre><code>systemctl enable keepalived\nsystemctl start keepalived<\/code><\/pre>\n<h3>11. \u5b89\u88c5 haproxy<\/h3>\n<pre><code>wget http:\/\/www.haproxy.org\/download\/1.7\/src\/haproxy-1.7.9.tar.gz\ntar xvf haproxy-1.7.9.tar.gz\ncd haproxy-1.7.9\nmake TARGET=linux2628 USE=PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=\/usr\/local\/haproxy\nmake install PREFIX=\/usr\/local\/haproxy\ncp .\/haproxy-systemd-wrapper \/usr\/sbin\/haproxy-systemd-wrapper\ncp .\/haproxy \/usr\/sbin\/haproxy<\/code><\/pre>\n<h3>12. \u51c6\u5907haproxy\u542f\u52a8\u811a\u672c <code>vim \/usr\/lib\/systemd\/system\/haproxy.service<\/code><\/h3>\n<pre><code>[Unit]\nDescription=HAProxy Load Balancer\nAfter=syslog.target network.target\n\n[Service]\nEnvironmentFile=\/etc\/sysconfig\/haproxy\nExecStart=\/usr\/sbin\/haproxy-systemd-wrapper -f \/etc\/haproxy\/haproxy.cfg -p \/run\/haproxy.pid $OPTIONS\nExecReload=\/biiin\/kill -USR2 $MAINPID\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n<h3>13. \u51c6\u5907\u7cfb\u7edf\u914d\u7f6e\u6587\u4ef6 <code>vim \/etc\/sysconfig\/haproxy<\/code><\/h3>\n<pre><code>OPTIONS=&quot;&quot;<\/code><\/pre>\n<h3>14. \u4fee\u6539\u4e3b\u914d\u7f6e\u6587\u4ef6 <code>mkdir \/var\/lib\/haproxy;mkdir \/etc\/haprxy;vim \/etc\/haproxy\/haproxy.cfg<\/code><\/h3>\n<pre><code>global\nmaxconn 100000\nuid 99\ndaemon\nnbproc 1\nlog 127.0.0.1 local0 info\nchroot \/usr\/local\/haproxy\nstats socket \/var\/lib\/haproxy\/haproxy.socket mode 600 level admin\n\ndefaults\noption redispatch    #\u5f53 serverId \u5bf9\u5e94\u7684\u670d\u52a1\u5668\u6302\u6389\u540e\uff0c\u5f3a\u5236\u5b9a\u5411\u5230\u5176\u4ed6\u5065\u5eb7\u7684\u670d\u52a1\u5668\noption abortonclose    #\u5f53\u670d\u52a1\u5668\u8d1f\u8f7d\u5f88\u9ad8\u7684\u65f6\u5019\uff0c\u81ea\u52a8\u7ed3\u675f\u6389\u5f53\u524d\u961f\u5217\u5904\u7406\u6bd4\u8f83\u4e45\u7684\u94fe\u63a5\noption http-keep-alive\noption forwardfor\nmaxconn 100000\nmode http\ntimeout connect 10s    #\u8fde\u63a5\u5230\u4e00\u53f0\u670d\u52a1\u5668\u7684\u6700\u957f\u7b49\u5f85\u65f6\u95f4\ntimeout client 20s    #\u8fde\u63a5\u5ba2\u6237\u7aef\u53d1\u9001\u6570\u636e\u6700\u957f\u7b49\u5f85\u65f6\u95f4\ntimeout server 30s    #\u670d\u52a1\u5668\u56de\u5e94\u5ba2\u6237\u7aef\u53d1\u9001\u6570\u636e\u6700\u957f\u7b49\u5f85\u65f6\u95f4\ntimeout check  5s    #\u5bf9\u540e\u7aef\u670d\u52a1\u5668\u7684\u68c0\u6d4b\u8d85\u65f6\u65f6\u95f4\n\nlisten stats\nmode http\nbind 0.0.0.0:9999\nstats enable\nlog global\nstats uri   \/haproxy-status\nstats auth    haadmin:33445566\n\nfrontend test\n    bind 192.168.10.100:80\n    mode http\n    default_backend  test_http_nodes\n\nbackend test_http_nodes\n    mode http\n    balance source\n    server 127.0.0.1 127.0.0.1:80  check inter 2000 fall 3 rise 5<\/code><\/pre>\n<h3>15. \u5404\u8d1f\u8f7d\u670d\u52a1\u5668\u914d\u7f6e\u5185\u6838\u53c2\u6570 <code>vim \/etc\/sysctl.conf<\/code><\/h3>\n<pre><code>net.ipv4.ip_nonlocal_bind = 1\nnet.ipv4.ip_forward = 1<\/code><\/pre>\n<h3>16. \u542f\u7528 haproxy<\/h3>\n<pre><code>sysctl -p\nsystemctl start haproxy\nsystemctl enable haproxy<\/code><\/pre>\n<h3>17.  \u5b89\u88c5 rabbitMQ<\/h3>\n<pre><code>yum install -y rabbitmq-server\nsystemctl enable rabbitmq-server.service\nsystemctl start rabbitmq-server.service<\/code><\/pre>\n<h3>18. \u6dfb\u52a0 rabbitMQ \u5ba2\u6237\u7aef\u7528\u6237\u5e76\u8bbe\u7f6e\u5bc6\u7801<\/h3>\n<pre><code>rabbitmqctl add_user openstack 123456<\/code><\/pre>\n<h3>19. \u8d4b\u4e88 openstack \u7528\u6237\u8bfb\u5199\u6743\u9650<\/h3>\n<pre><code>rabbitmqctl set_permissions openstack &quot;.*&quot; &quot;.*&quot; &quot;.*&quot;<\/code><\/pre>\n<h3>20. \u6253\u5f00 rabbitMQ \u7684 web \u63d2\u4ef6<\/h3>\n<pre><code>rabbitmq-plugins enable rabbitmq_management\nrabbitmq-plugins list    #\u67e5\u770b\u63d2\u4ef6<\/code><\/pre>\n<h3>21. \u5b89\u88c5 memcached<\/h3>\n<p>\u7528\u4e8e\u7f13\u5b58 openstack \u5404\u670d\u52a1\u7684\u8eab\u4efd\u8ba4\u8bc1\u4ee4\u724c\u4fe1\u606f\u3002<\/p>\n<pre><code>yum install -y memcached\nyum install -y python-memcached    #openstack \u5b89\u88c5 python \u6a21\u5757<\/code><\/pre>\n<h3>22. \u7f16\u8f91memcached\u914d\u7f6e\u6587\u4ef6 <code>vim \/etc\/sysconfig\/memcached<\/code><\/h3>\n<pre><code>PORT=&quot;11212&quot;    #\u907f\u514d\u548chaproxy\u76d1\u542c\u768411211\u51b2\u7a81\nUSER=&quot;memcached&quot;\nMAXCONN=&quot;1024&quot;\nCACHESIZE=&quot;512&quot;\nOPTIONS=&quot;-l 192.168.10.205&quot;<\/code><\/pre>\n<h3>23. \u542f\u52a8memcached<\/h3>\n<pre><code>systemctl enable memcached\nsystemctl start memcached<\/code><\/pre>\n<h2>\u90e8\u7f72\u8ba4\u8bc1\u670d\u52a1 keystone<\/h2>\n<p>keystone \u4e3b\u8981\u6d89\u53ca\u4ee5\u4e0b\u51e0\u4e2a\u6982\u5ff5\uff1a<\/p>\n<ul>\n<li><code>User<\/code>\uff1a\u4f7f\u7528 openstack \u7684\u7528\u6237\u3002<\/li>\n<li><code>Tenant<\/code>\uff1a\u79df\u6237\u3001\u7528\u6237\u7ec4\uff0c\u5728\u4e00\u4e2a\u79df\u6237\u4e2d\u53ef\u4ee5\u6709\u591a\u4e2a\u7528\u6237\uff0c\u8fd9\u4e9b\u7528\u6237\u53ef\u4ee5\u6839\u636e\u6743\u9650\u7684\u5212\u5206\uff0c\u4f7f\u7528\u79df\u6237\u4e2d\u7684\u8d44\u6e90\u3002<\/li>\n<li><code>Role<\/code>\uff1a\u89d2\u8272\uff0c\u7528\u4e8e\u5206\u914d\u64cd\u4f5c\u7684\u6743\u9650\u3002\u89d2\u8272\u53ef\u4ee5\u88ab\u6307\u5b9a\u7ed9\u7528\u6237\uff0c\u4f7f\u5f97\u8be5\u7528\u6237\u83b7\u5f97\u89d2\u8272\u5bf9\u5e94\u7684\u64cd\u4f5c\u6743\u9650\u3002<\/li>\n<li><code>Token<\/code>\uff1a\u4e00\u4e32\u6bd4\u7279\u503c\u6216\u5b57\u7b26\u4e32\uff0c\u7528\u6765\u4f5c\u4e3a\u8bbf\u95ee\u8d44\u6e90\u7684\u51e0\u53f7\u3002Token\u4e2d\u542b\u6709\u53ef\u8bbf\u95ee\u8d44\u6e90\u7684\u8303\u56f4\u548c\u6709\u6548\u65f6\u95f4\u3002<\/li>\n<\/ul>\n<h3>1. keystone \u6570\u636e\u5e93\u914d\u7f6e<\/h3>\n<pre><code>CREATE DATABASE keystone;\nGRANT ALL PRIVILEGES ON keystone.* TO &#039;keystone&#039;@&#039;%&#039; identified by &#039;keystone&#039;;\nFLUSH PRIVILEGES;<\/code><\/pre>\n<h3>2. \u914d\u7f6e haproxy \u4ee3\u7406<\/h3>\n<pre><code>###openstack-mysql#######\nfrontend openstack_mysql\n    bind 192.168.10.100:3306\n    mode tcp\n    default_backend  openstack_mysql_node\n\nbackend  openstack_mysql_node\n    mode tcp\n    balance source\n    server 192.168.10.204  192.168.10.204:3306  check inter 2000 fall 3 rise 5\n\n###openstack-memcached########\nfrontend openstack_memcached\n    bind 192.168.10.100:11211\n    mode tcp\n    default_backend  openstack_memcached_node\n\nbackend  openstack_memcached_node\n    mode tcp\n    balance source\n    server 192.168.10.100  192.168.10.100:11212  check inter 2000 fall 3 rise 5<\/code><\/pre>\n<h3>3. \u5b89\u88c5 keystone<\/h3>\n<pre><code>yum install -y openstack-keystone httpd mod_wsgi python-memcached\n## openstack-keystone \u662f keystone \u670d\u52a1\n## mod_wsgi \u662f python \u7684\u901a\u7528\u7f51\u5173<\/code><\/pre>\n<h3>4. \u7f16\u8f91 keystone \u914d\u7f6e\u6587\u4ef6<\/h3>\n<pre><code>openssl rand -hex 10    ## \u751f\u6210\u4e34\u65f6 token\nvim \/etc\/keystone\/kestone.conf\n\nadmin_token = xxxxxxxxxxxxx        #\u5927\u698217\u884c\uff0c\u6539\u4e3a\u4e0a\u9762\u751f\u6210\u7684\u4e34\u65f6token\nconnection = mysql+pymysql:\/\/keystone:keystone@192.168.10.100\/keystone        #\u5927\u6982714\u884c\nprovider = fernet        #\u5927\u69822833\u884c<\/code><\/pre>\n<h3>5. \u521d\u59cb\u5316\u5e76\u9a8c\u8bc1\u6570\u636e\u5e93<\/h3>\n<pre><code>su -s \/bin\/sh -c &quot;keystone-manage db_sync&quot; keystone\n\n#\u9a8c\u8bc1\u662f\u5426\u5df2\u7ecf\u6709\u8868\nUSE keystone;\nSHOW tables;<\/code><\/pre>\n<h3>6. \u521d\u59cb\u5316\u8bc1\u4e66\u5e76\u9a8c\u8bc1<\/h3>\n<pre><code>keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone\nkeystone-manage credential_setup --keystone-user keystone --keystone-group keystone<\/code><\/pre>\n<h3>7. \u6dfb\u52a0 keystone \u7684web\u914d\u7f6e<\/h3>\n<pre><code>#vim \/etc\/httpd\/conf\/httpd.conf\nServerName 192.168.10.201:80\n\n#\u8f6f\u94fe\u63a5\u914d\u7f6e\u6587\u4ef6\nln -s \/usr\/share\/keystone\/wsgi-keystone.conf \/etc\/httpd\/conf.d\/\n\n#\u542f\u52a8apache\nsystemctl start httpd\nsystemctl enable httpd<\/code><\/pre>\n<h3>8. \u521b\u5efa\u57df\u3001\u7528\u6237\u3001\u9879\u76ee\u548c\u89d2\u8272<\/h3>\n<ul>\n<li>\u901a\u8fc7admin\u7684token\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\n<pre><code>export OS_TOKEN=xxxxxxxxxxxxxxxxx\nexport OS_URL=http:\/\/192.168.10.201:35357\/v3\nexport OS_IDENTITY_API_VERSION=3<\/code><\/pre>\n<\/li>\n<li>\u521b\u5efa\u9ed8\u8ba4\u57df <font color=red>\u4e00\u5b9a\u8981\u5148\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\uff0c\u5426\u5219\u63d0\u793a\u672a\u8ba4\u8bc1<\/font>\n<pre><code>openstack domain create --description \"Default Domain\" default<\/code><\/pre>\n<\/li>\n<li>\u521b\u5efa\u4e00\u4e2a admin \u7684\u9879\u76ee\n<pre><code>openstack project create --domain default --description \"Admin Project\" admin<\/code><\/pre>\n<\/li>\n<li>\u521b\u5efa admin \u7528\u6237\uff0c\u5e76\u8bbe\u7f6e\u5bc6\u7801\u4e3a admin\n<pre><code>openstack user create --domain default --password-prompt admin<\/code><\/pre>\n<\/li>\n<li>\u521b\u5efa admin \u89d2\u8272<br \/>\n\u4e00\u4e2a\u9879\u76ee\u91cc\u9762\u53ef\u4ee5\u6709\u591a\u4e2a\u89d2\u8272\uff0c\u76ee\u524d\u89d2\u8272\u53ea\u80fd\u521b\u5efa\u5728 <code>\/etc\/keystone\/policy.json<\/code> \u6587\u4ef6\u4e2d\u5b9a\u4e49\u597d\u7684\u89d2\u8272\u3002<\/p>\n<pre><code>openstack role create admin<\/code><\/pre>\n<\/li>\n<li>\u7ed9 admin \u7528\u6237\u6388\u6743<br \/>\n\u5c06admin\u4e0e\u7528\u6237\u6388\u4e88admin\u9879\u76ee\u7684admin\u89d2\u8272\u3002<\/p>\n<pre><code>openstack role add --project admin --user admin admin<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>9. \u521b\u5efa demo \u9879\u76ee<\/h3>\n<p>\u8be5\u9879\u76ee\u53ef\u7528\u4e8e\u6f14\u793a\u6216\u6d4b\u8bd5\u7b49\u3002<\/p>\n<pre><code>openstack project create --domain default --description &quot;Demo project&quot; demo\nopenstack user create --domain default --password-prompt demo\nopenstack role create user   \nopenstack role add --project demo --user demo user<\/code><\/pre>\n<h3>10. \u521b\u5efa service \u9879\u76ee<\/h3>\n<p>\u5404\u670d\u52a1\u4e4b\u95f4\u4e0e keystone \u8fdb\u884c\u8bbf\u95ee\u548c\u8ba4\u8bc1\uff0cservice \u7528\u4e8e\u7ed9\u670d\u52a1\u521b\u5efa\u7528\u6237\u3002<\/p>\n<pre><code>#\u521b\u5efaservice\u9879\u76ee\nopenstack project create -domain default --description &quot;Service Project&quot; service\n\n#\u521b\u5efaglance\u7528\u6237\nopenstack user create --domain default --password-prompt glance\n\n#\u5bf9glance\u7528\u6237\u6388\u6743\uff08\u6dfb\u52a0\u5230service\u9879\u76ee\uff0c\u5e76\u6388\u4e88admin\u89d2\u8272\uff09\nopenstack role add --project service --user glance admin<\/code><\/pre>\n<h3>11. \u521b\u5efa nova\u3001neutron \u7528\u6237<\/h3>\n<pre><code>openstack user create --domain default --password-prompt nova\nopenstack role add --project service --user nova admin\n\nopenstack user create --domain default --password-prompt neutron\nopenstack role add --project service --user neutron admin<\/code><\/pre>\n<h3>12. \u5c06 keystone \u670d\u52a1\u6ce8\u518c\u5230 openstack<\/h3>\n<pre><code>#\u521b\u5efa\u4e00\u4e2akeystone\u8ba4\u8bc1\u670d\u52a1\nopenstack service list    ## \u67e5\u770b\u5f53\u524d\u7684\u670d\u52a1\u5217\u8868\nopenstack service create --name keystone --description &quot;Openstack Identity&quot; identity\n\n#\u521b\u5efaendpoint\uff08\u5982\u679c\u51fa\u73b0\u9519\u8bef\uff0c\u9700\u8981\u5168\u90e8\u5220\u9664\u518d\u91cd\u65b0\u6ce8\u518c\u3002\u6ce8\u518c\u7684IP\u5730\u5740\u5199keepalived\u7684VIP\uff09\nopenstack endpoint create --region RegionOne identity public http:\/\/192.168.10.100:5000\/v3         #\u516c\u5171\u7aef\u70b9\nopenstack endpoint create --region RegionOne identity internal http:\/\/192.168.10.100:5000\/v3         #\u79c1\u6709\u7aef\u70b9\nopenstack endpoint create --region RegionOne identity admin http:\/\/192.168.10.100:35357\/v3         #\u7ba1\u7406\u7aef\u70b9<\/code><\/pre>\n<h3>13. \u914d\u7f6ehaproxy\uff0c\u6dfb\u52a0keystone\u4ee3\u7406 <code>vim \/etc\/haproxy\/haproxy.cfg<\/code><\/h3>\n<pre><code>listen keystone-public-url\n    bind 192.168.10.100:5000\n    mode tcp\n    log global\n    balance source\n    server keystone1 192.168.10.201:5000 check inter 5000 rise 3 fall 3\n\nlisten keystone-admin-url\n    bind 192.168.10.100:35357\n    mode tcp\n    log global\n    balance source\n    server keystone1 192.168.10.201:35357 check inter 5000 rise 3 fall 3<\/code><\/pre>\n<h3>14. \u91cd\u542fhaproxy\uff0c\u5e76\u9a8c\u8bc1\u8bbf\u95ee<\/h3>\n<pre><code>systemctl restart haproxy\ntelnet 192.168.10.100 5000<\/code><\/pre>\n<h3>15. \u6d4b\u8bd5 keystone \u662f\u5426\u53ef\u4ee5\u505a\u7528\u6237\u9a8c\u8bc1<\/h3>\n<p>\u9a8c\u8bc1 admin \u7528\u6237\uff0c\u5bc6\u7801 admin<\/p>\n<pre><code>export OS_IDENTITY_API_VERSION=3\nopenstack --os-auth-url http:\/\/192.168.10.100:35357\/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue<\/code><\/pre>\n<h3>16. \u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\u7684\u811a\u672c<\/h3>\n<p>admin\u7528\u6237\uff1a<code>vim admin-ocata.sh<\/code><\/p>\n<pre><code>#!\/bin\/bash\nexport OS_PROJECT_DOMAIN_NAME=default\nexport OS_USER_DOMAIN_NAME=default\nexport OS_PROJECT_NAME=admin\nexport OS_USERNAME=admin\nexport OS_PASSWORD=admin\nexport OS_AUTH_URL=http:\/\/192.168.10.100:35357\/v3\nexport OS_IDENTITY_API_VERSION=3\nexport OS_IMAGE_API_VERSION=2<\/code><\/pre>\n<p>Demo\u7528\u6237\uff1a<code>vim demo-ocata.sh<\/code><\/p>\n<pre><code>#!\/bin\/bash\nexport OS_PROJECT_DOMAIN_NAME=default\nexport OS_USER_DOMAIN_NAME=default\nexport OS_PROJECT_NAME=demo\nexport OS_USERNAME=demo\nexport OS_PASSWORD=demo\nexport OS_AUTH_URL=http:\/\/192.168.10.100:5000\/v3\nexport OS_IDENTITY_API_VERSION=3\nexport OS_IMAGE_API_VERSION=2<\/code><\/pre>\n<h2>\u90e8\u7f72\u955c\u50cf\u670d\u52a1 Glance<\/h2>\n<p>glance\u670d\u52a1\u9ed8\u8ba4\u76d1\u542c\u7aef\u53e3\u4e3a<code>9292<\/code>\uff0c\u9700\u8981\u5148\u628a\u955c\u50cf\u4e0a\u4f20\u5230 glance\uff0c\u67e5\u770b\u3001\u5220\u9664\u7b49\u64cd\u4f5c\u90fd\u662f\u901a\u8fc7 glance \u8fdb\u884c\u7ba1\u7406\u3002<br \/>\nglance\u6709\u4e24\u4e2a\u4e3b\u8981\u7684\u670d\u52a1\uff1a<\/p>\n<ul>\n<li><code>glance-api<\/code>\uff1a\u63a5\u6536\u955c\u50cf\u7684\u5220\u9664\u3001\u4e0a\u4f20\u3001\u8bfb\u53d6\u7b49\uff1b<\/li>\n<li><code>glance-Registry<\/code>\uff1a\u8d1f\u8d23\u4e0emysql\u4ea4\u4e92\uff0c\u7528\u4e8e\u5b58\u50a8\u6216\u83b7\u53d6\u955c\u50cf\u7684\u5143\u6570\u636e\uff08metadata\uff09\uff0c\u9ed8\u8ba4\u76d1\u542c\u7aef\u53e3\u4e3a<code>9191<\/code>\u3002<\/li>\n<\/ul>\n<p>glance\u6570\u636e\u5e93\u6709\u4e24\u5f20\u8868\uff1a<\/p>\n<ul>\n<li><code>image<\/code>\uff1a\u5b58\u653e\u955c\u50cf\u683c\u5f0f\u3001\u5927\u5c0f\u7b49\u4fe1\u606f\uff1b<\/li>\n<li><code>image property<\/code>\uff1a\u5b58\u653e\u955c\u50cf\u7684\u5b9a\u5236\u5316\u4fe1\u606f\uff1b<\/li>\n<\/ul>\n<p><code>image store<\/code> \u662f\u4e00\u4e2a\u5b58\u50a8\u7684\u63a5\u53e3\u5c42\uff0c\u901a\u8fc7\u8fd9\u4e2a\u63a5\u53e3 glance \u53ef\u4ee5\u83b7\u53d6\u955c\u50cf\u3002\u652f\u6301\u7684\u5b58\u50a8\u6709 Amazon \u7684 S3\u3001openstack \u672c\u8eab\u7684 swift\u3001\u8fd8\u6709 ceph\u3001glusterFS \u7b49\u5206\u5e03\u5f0f\u5b58\u50a8\u3002<br \/>\nglance \u4e0d\u9700\u8981\u914d\u7f6e\u6d88\u606f\u961f\u5217\uff0c\u4f46\u662f\u9700\u8981\u914d\u7f6e\u6570\u636e\u5e93\u548ckeystone\u3002<\/p>\n<h3>1. \u5b89\u88c5 glance<\/h3>\n<pre><code>yum install -y openstack-glance<\/code><\/pre>\n<h3>2. \u521b\u5efa\u6570\u636e\u5e93\u7528\u6237<\/h3>\n<pre><code>CREATE DATABASE glance;\nGRANT ALL PRIVILEGES ON glance.* TO &#039;glance&#039;@&#039;%&#039; identified by &#039;glance&#039;;\nFLUSH PRIVILEGES;<\/code><\/pre>\n<h3>3. \u7f16\u8f91 glance-api \u914d\u7f6e\u6587\u4ef6 <code>grep -n &quot;^[a-Z\\[]&quot; \/etc\/glance\/glance-api.conf<\/code><\/h3>\n<pre><code>[database]\nconnection = mysql+pymysql:\/\/glance:glance@192.168.10.100\/glance\n[glance_store]\nstores = file,http\ndefault_store = file\nfilesystem_store_datadir = \/var\/lib\/glance\/images\n[keystone_authtoken]\nauth_url = http:\/\/192.168.10.100:5000\nauth_url = http:\/\/192.168.10.100:35357\nmemcached_servers = 192.168.10.100:11211\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nproject_name = service\nusername = glance\npassword = glance\n[paste_deploy]\nflavor = keystone<\/code><\/pre>\n<h3>4. \u7f16\u8f91 glance-registry \u914d\u7f6e\u6587\u4ef6 <code>vim \/etc\/glance\/glance-registry.conf<\/code><\/h3>\n<pre><code>[database]\nconnection = mysql+pymysql:\/\/glance:glance@192.168.10.100\/glance\n[keystone_authtoken]\nauth_url = http:\/\/192.168.10.100:5000\nauth_url = http:\/\/192.168.10.100:35357\nmemcached_servers = 192.168.10.100:11211\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nproject_name = service\nusername = glance\npassword = glance\n[paste_deploy]\nflavor = keystone<\/code><\/pre>\n<h3>5. \u914d\u7f6e haproxy \u4ee3\u7406 glance <code>vim \/etc\/haproxy\/haproxy.cfg<\/code><\/h3>\n<pre><code>listen glance-api\n    bind 192.168.10.100:9292\n    mode tcp\n    log global\n    balance source\n    server glance-api1 192.168.10.201:9292 check inter 5000 rise 3 fall 3\n\nlisten glance\n    bind 192.168.10.100:9191\n    mode tcp\n    log global\n    balance source\n    server glance1 192.168.10.201:9191 check inter 5000 rise 3 fall 3<\/code><\/pre>\n<h3>6. \u91cd\u542f haproxy<\/h3>\n<pre><code>systemctl restart haproxy<\/code><\/pre>\n<h3>7. \u521d\u59cb\u5316 glance \u6570\u636e\u5e93<\/h3>\n<pre><code>su -s \/bin\/sh -c &quot;glance-manage db_sync&quot; glance<\/code><\/pre>\n<h3>8. \u542f\u52a8 glance<\/h3>\n<pre><code>systemctl enable openstack-glance-api.service openstack-glance-registry.service\nsystemctl start openstack-glance-api.service openstack-glance-registry.service<\/code><\/pre>\n<h3>9. \u6ce8\u518c glance \u670d\u52a1<\/h3>\n<pre><code>#\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\uff08\u811a\u672c\u5185\u5bb9\u5728\u4e0a\u9762\uff09\nsource admin-ocata.sh\n\n#\u521b\u5efaglance\u670d\u52a1\nopenstack service create --name glance --description &quot;OpenStack Image&quot; image\n\n#\u521b\u5efa\u5171\u6709endpoint\nopenstack endpoint create --region RegionOne image public http:\/\/192.168.10.100:9292\n\n#\u521b\u5efa\u79c1\u6709endpoint\nopenstack endpoint create --region RegionOne image internal http:\/\/192.168.10.100:9292\n\n#\u521b\u5efa\u7ba1\u7406endp\nopenstack endpoint create --region RegionOne image admin http:\/\/192.168.10.100:9292<\/code><\/pre>\n<h3>10. \u9a8c\u8bc1glance\u670d\u52a1<\/h3>\n<pre><code>openstack endpoint list<\/code><\/pre>\n<h3>11. \u4e0a\u4f20\u955c\u50cf\uff0c\u5e76\u9a8c\u8bc1<\/h3>\n<pre><code>wget http:\/\/download.cirros-cloud.net\/0.3.4\/cirros-0.3.4-x86_64-disk.img\nsource admin-ocata.sh\nopenstack image create &quot;cirros&quot; --file \/root\/cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public\n\n#\u67e5\u770b\u662f\u5426\u6709\u955c\u50cf\nglance image-list\nopenstack image list\n\n#\u67e5\u770b\u6307\u5b9a\u955c\u50cf\u4fe1\u606f\nopenstack-image show cirros<\/code><\/pre>\n<h2>\u90e8\u7f72 nova \u63a7\u5236\u8282\u70b9<\/h2>\n<p>nova \u662f openstack \u6700\u65e9\u7684\u7ec4\u4ef6\u4e4b\u4e00\uff0c\u5206\u4e3a<strong>\u63a7\u5236\u8282\u70b9<\/strong>\u548c<strong>\u8ba1\u7b97\u8282\u70b9<\/strong>\u3002<br \/>\n\u8ba1\u7b97\u8282\u70b9\u901a\u8fc7 nova computer \u8fdb\u884c\u865a\u62df\u673a\u521b\u5efa\uff0c\u901a\u8fc7 libvirt \u8c03\u7528 kvm \u521b\u5efa\u865a\u62df\u673a\uff0cnova \u4e4b\u95f4\u901a\u4fe1\u901a\u8fc7 rabbitMQ \u961f\u5217\uff0c\u5176\u7ec4\u4ef6\u548c\u529f\u80fd\u5982\u4e0b\uff1a<\/p>\n<ul>\n<li><code>API<\/code>\uff1a\u8d1f\u8d23\u63a5\u6536\u548c\u54cd\u5e94\u5916\u90e8\u8bf7\u6c42\uff1b<\/li>\n<li><code>Scheduler<\/code>\uff1a\u8d1f\u8d23\u8c03\u5ea6\u865a\u62df\u673a\u6240\u5728\u7684\u7269\u7406\u673a\uff1b<\/li>\n<li><code>Conductor<\/code>\uff1a\u8ba1\u7b97\u8282\u70b9\u8bbf\u95ee\u6570\u636e\u5e93\u7684\u4e2d\u95f4\u4ef6\uff1b<\/li>\n<li><code>Consoleauth<\/code>\uff1a\u7528\u4e8e\u63a7\u5236\u53f0\u7684\u6388\u6743\u8ba4\u8bc1\uff1b<\/li>\n<li><code>Novncproxy<\/code>\uff1aVNC\u4ee3\u7406\uff0c\u7528\u4e8e\u663e\u793a\u865a\u62df\u673a\u64cd\u4f5c\u7ec8\u7aef\uff1b<\/li>\n<\/ul>\n<p><strong>Nova-API\u7684\u529f\u80fd<\/strong>\uff1a<br \/>\nNova-api \u7ec4\u4ef6\u5b9e\u73b0\u4e86 restful API \u7684\u529f\u80fd\uff0c\u63a5\u6536\u548c\u54cd\u5e94\u6765\u81ea\u6700\u7ec8\u7528\u6237\u7684\u8ba1\u7b97API\u8bf7\u6c42\uff0c\u63a5\u6536\u5916\u90e8\u7684\u8bf7\u6c42\uff0c\u5e76\u901a\u8fc7 message queue \u5c06\u8bf7\u6c42\u53d1\u9001\u7ed9\u5176\u4ed6\u670d\u52a1\u7ec4\u4ef6\uff0c\u540c\u65f6\u4e5f\u517c\u5bb9 EC2 API\uff0c\u53ef\u4ee5\u4f7f\u7528 EC2 \u7684\u7ba1\u7406\u5de5\u5177\u5bf9 nova \u8fdb\u884c\u65e5\u5e38\u7ba1\u7406\u3002<\/p>\n<p><strong>nova scheduler\u7684\u529f\u80fd<\/strong>\uff1a<br \/>\n\u51b3\u7b56\u865a\u62df\u673a\u521b\u5efa\u5728\u54ea\u4e2a\u4e3b\u673a\uff08\u8ba1\u7b97\u8282\u70b9\uff09\u4e0a\uff0c\u5206\u4e3a\u4e24\u4e2a\u6b65\u9aa4\uff1a<\/p>\n<ol>\n<li><code>\u8fc7\u6ee4\uff08filter\uff09<\/code>\uff1a\u9996\u5148\u83b7\u53d6\u4e3b\u673a\u5217\u8868\uff0c\u6839\u636e\u8fc7\u6ee4\u5c5e\u6027\uff0c\u9009\u62e9\u7b26\u5408\u6761\u4ef6\u7684\u4e3b\u673a\uff1b<\/li>\n<li><code>\u8ba1\u7b97\u6743\u503c\uff08weight\uff09<\/code>\uff1a\u9ed8\u8ba4\u6839\u636e\u8d44\u6e90\u53ef\u7528\u7a7a\u95f4\u8fdb\u884c\u6743\u91cd\u6392\u5e8f\uff0c\u7136\u540e\u9009\u62e9\u6743\u91cd\u5927\u7684\u4e3b\u673a\uff1b<\/li>\n<\/ol>\n<h3>1. \u5b89\u88c5nova<\/h3>\n<pre><code>yum install -y \\\nopenstack-nova-api \\\nopenstack-nova-conductor \\\nopenstack-nova-console \\\nopenstack-nova-novncproxy \\\nopenstack-nova-scheduler \\\nopenstack-nova-placement-api<\/code><\/pre>\n<h3>2. \u51c6\u5907\u6570\u636e\u5e93<\/h3>\n<pre><code>CREATE DATABASE nova_api;\nGRANT ALL PRIVILEGES ON nova_api.* TO &#039;nova&#039;@&#039;%&#039; IDENTIFIED BY &#039;nova123&#039;;\n\nCREATE DATABASE nova;\nGRANT ALL PRIVILEGES ON nova.* TO &#039;nova&#039;@&#039;%&#039; IDENTIFIED BY &#039;nova123&#039;;\n\nCREATE DATABASE nova_cell0;\nGRANT ALL PRIVILEGES ON nova_cell0.* TO &#039;nova&#039;@&#039;%&#039; IDENTIFIED BY &#039;nova123&#039;;\n\nFLUSH PRIVILEGES;<\/code><\/pre>\n<h3>3. \u521b\u5efa nova \u670d\u52a1\uff0c\u5e76\u6ce8\u518c<\/h3>\n<pre><code>openstack service create --name nova --description &quot;OpenStack Compute&quot; compute\n\n#\u516c\u5171endpoint\nopenstack endpoint create --region RegionOne compute public http:\/\/192.168.10.100:8774\/v2.1\n\n#\u79c1\u6709endpoint\nopenstack endpoint create --region RegionOne compute internal http:\/\/192.168.10.100:8774\/v2.1\n\n#\u7ba1\u7406endpoint\nopenstack endpoint create --region RegionOne compute admin http:\/\/192.168.10.100:8774\/v2.1<\/code><\/pre>\n<h3>4. \u521b\u5efa placement \u7528\u6237\u5e76\u6388\u6743<\/h3>\n<pre><code>openstack user create --domain default --password-prompt placement\nopenstack role add --project service --user placement admin<\/code><\/pre>\n<h3>5. \u521b\u5efa placement API \u670d\u52a1\u5e76\u6ce8\u518c<\/h3>\n<pre><code>openstack service create --name placement --description &quot;Placement API&quot; placement\n\n#\u516c\u5171endpoint\nopenstack endpoint create --region RegionOne placement public http:\/\/192.168.10.100:8774\/v2.1\n\n#\u79c1\u6709endpoint\nopenstack endpoint create --region RegionOne placement internal http:\/\/192.168.10.100:8774\/v2.1\n\n#\u7ba1\u7406endpoint\nopenstack endpoint create --region RegionOne placement admin http:\/\/192.168.10.100:8774\/v2.1<\/code><\/pre>\n<h3>6. \u7f16\u8f91\u914d\u7f6e\u6587\u4ef6 <code>vim \/etc\/nova\/nova.conf<\/code><\/h3>\n<pre><code>[DEFAULT]\nuse_neutron=true\nfirewall_driver=nova.virt.firewall.NoopFirewallDriver\nenabled_apis=osapi_compute,metadata\ntransport_url = rabbit:\/\/openstack:123456@192.168.10.205\nrpc_backend=rabbit\n[api]\nauth_strategy=keystone\n[api_database]\nconnection = mysql+pymysql:\/\/nova:nova123@192.168.10.100\/nova_api\n[database]\nconnection = mysql+pymysql:\/\/nova:nova123@192.168.10.100\/nova\n[glance]\napi_servers=http:\/\/192.168.10.100:9292\n[keystone_authtoken]\nauth_uri = http:\/\/192.168.10.100:5000\nauth_url = http:\/\/192.168.10.100:35357\nmemcached_servers = 192.168.10.100:11211\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nproject_name = service\nusername = nova\npassword = nova\n[oslo_concurrency]\nlock_path=\/var\/lib\/nova\/tmp\n[placement]\nos_region_name = RegionOne\nproject_domain_name = Default\nproject_name = service\nauth_type = password\nuser_domain_name = Default\nauth_url = http:\/\/192.168.10.100:35357\/v3\nusername = placement\npassword = placement\n[vnc]\nenabled=true\nvncserver_listen=192.168.10.201\nvncserver_proxyclient_address=192.168.10.201<\/code><\/pre>\n<h3>7. \u914d\u7f6e apache \u5141\u8bb8\u8bbf\u95ee placement API <code>vim \/etc\/httpd\/conf.d\/00-nova-placement-api.conf<\/code><\/h3>\n<pre><code>&lt;Directory \/usr\/bin&gt;\n    &lt;IfVersion &gt;= 2.4&gt;\n        Require all granted\n    &lt;\/IfVersion&gt;\n    &lt;Ifversion &lt; 2.4&gt;\n        order allow,deny\n        Allow from all\n    &lt;\/Ifversion&gt;\n&lt;\/Directory&gt;<\/code><\/pre>\n<h3>8. \u91cd\u542fhttpd<\/h3>\n<pre><code>systemctl restart httpd<\/code><\/pre>\n<h3>9. \u521d\u59cb\u5316\u6570\u636e\u5e93<\/h3>\n<pre><code>#nova_api \u6570\u636e\u5e93\nsu -s \/bin\/sh -c &quot;nova-manage api_db sync&quot; nova\n\n#nova \u6570\u636e\u5e93\nsu -s \/bin\/sh -c &quot;nova-manage db sync&quot; nova\n\n#nova cell0 \u6570\u636e\u5e93\nsu -s \/bin\/sh -c &quot;nova-manage cell_v2 map_cell0&quot; nova\n\n#nova cell1 \u6570\u636e\u5e93\nsu -s \/bin\/sh -c &quot;nova-manage cell_v2 create_cell --name=cell1 --verbose&quot; nova<\/code><\/pre>\n<h3>10. \u9a8c\u8bc1 nova cell0 \u548c nova cell1 \u662f\u5426\u6b63\u5e38\u6ce8\u518c<\/h3>\n<pre><code>nova-manage cell_v2 list_cells<\/code><\/pre>\n<h3>11. \u542f\u52a8 nova<\/h3>\n<pre><code>systemctl enable \\\nopenstack-nova-api.service \\\nopenstack-nova-consoleauth.service \\\nopenstack-nova-scheduler.service \\\nopenstack-nova-conductor.service \\\nopenstack-nova-novncproxy.service\n\nsystemctl start \\\nopenstack-nova-api.service \\\nopenstack-nova-consoleauth.service \\\nopenstack-nova-scheduler.service \\\nopenstack-nova-conductor.service \\\nopenstack-nova-novncproxy.service<\/code><\/pre>\n<h3>12. \u67e5\u770b\u65e5\u5fd7\u6709\u6ca1\u6709\u62a5\u9519\uff0c\u4ee5\u53carabbitMQ\u662f\u5426\u6709\u8fde\u63a5<\/h3>\n<h3>13. \u9a8c\u8bc1nova\u63a7\u5236\u7aef<\/h3>\n<pre><code>nova service-list<\/code><\/pre>\n<h2>\u90e8\u7f72 nova \u8ba1\u7b97\u8282\u70b9<\/h2>\n<p>\u5728\u8ba1\u7b97\u8282\u70b9\u4e3b\u673a\u90e8\u7f72<\/p>\n<h3>1. \u5b89\u88c5nova\u8ba1\u7b97\u8282\u70b9<\/h3>\n<pre><code>yum install -y openstack-nova-compute<\/code><\/pre>\n<h3>2. \u4fee\u6539\u914d\u7f6e\u6587\u4ef6 <code>vim \/etc\/nova\/nova.conf<\/code><\/h3>\n<pre><code>[DEFAULT]\nuse_neutron=true\nfirewall_driver=nova.virt.firewall.NoopFirewallDriver\nenabled_apis=osapi_compute,metadata\ntransport_url = rabbit:\/\/openstack:123456@192.168.10.205\n[api]\nauth_strategy=keystone\n[glance]\napi_servers=http:\/\/192.168.10.100:9292\n[keystone_authtoken]\nauth_uri = http:\/\/192.168.10.100:5000\nauth_url = http:\/\/192.168.10.100:35357\nmemcached_servers = 192.168.10.100:11211\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nproject_name = service\nusername = nova\npassword = nova\n[oslo_concurrency]\nlock_path=\/var\/lib\/nova\/tmp\n[placement]\nos_region_name = RegionOne\nproject_domain_name = Default\nproject_name = service\nauth_type = password\nuser_domain_name = Default\nauth_url = http:\/\/192.168.10.100:35357\/v3\nusername = placement\npassword = placement\n[vnc]\nenabled=true\nvncserver_listen=192.168.10.201\nvncserver_proxyclient_address=192.168.10.202\nnovncproxy_base_url=http:\/\/192.168.10.100:6080\/vnc_auto.html<\/code><\/pre>\n<h3>3. \u786e\u8ba4\u4e3b\u673a\u662f\u5426\u652f\u6301\u786c\u4ef6\u52a0\u901f<\/h3>\n<pre><code>egrep -c &#039;(vmx|svm)&#039; \/proc\/cpuinfo<\/code><\/pre>\n<h3>4. \u542f\u52a8nova\u8ba1\u7b97\u670d\u52a1<\/h3>\n<pre><code>systemctl enable libvirtd.service openstack-nova-compute.service\nsystemctl start libvirtd.service openstack-nova-compute.service<\/code><\/pre>\n<h3>5. \u6dfb\u52a0\u8ba1\u7b97\u8282\u70b9\u5230cell\u6570\u636e\u5e93<\/h3>\n<pre><code>source admin-openstack.sh\nopenstack hypervisor list<\/code><\/pre>\n<h3>6. \u4e3b\u52a8\u53d1\u73b0\u8ba1\u7b97\u8282\u70b9<\/h3>\n<ul>\n<li>\u547d\u4ee4\uff0c\u624b\u52a8\u53d1\u73b0\n<pre><code>su -s \/bin\/sh -c \"nova-manage cell_v2 discover_hosts --verbose\" nova<\/code><\/pre>\n<\/li>\n<li>\u914d\u7f6e\u6587\u4ef6\uff0c\u5b9a\u671f\u81ea\u52a8\u53d1\u73b0 <code>vim \/etc\/nova\/nova.conf<\/code>\n<pre><code>[scheduler]\ndiscover_hosts_in_cells_interval=300<\/code><\/pre>\n<ul>\n<li>\u91cd\u542fnova\u670d\u52a1\uff1a<code>bash nova-restart.sh<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>7. \u9a8c\u8bc1\u8ba1\u7b97\u8282\u70b9<\/h3>\n<pre><code>nova host-list\nnova service-list\nnova image-list\nopenstack image list\nopenstack compute service list\n\n#\u5217\u51fa\u7ec4\u4ef6\u662f\u5426\u6210\u529f\u6ce8\u518c\nopenstack compute service list\n\n#\u68c0\u67e5cells \u548c placement API \u662f\u5426\u6b63\u5e38\u5de5\u4f5c\nnova-status upgrade check\n\n#\u5217\u51fakeystone\u4e2d\u7684\u7aef\u70b9\uff0c\u9a8c\u8bc1\u8fde\u901a\u6027\nopenstack catalog list<\/code><\/pre>\n<h2>\u90e8\u7f72\u7f51\u7edc\u670d\u52a1 neutron<\/h2>\n<p>OpenStack\u4e2d\u7269\u7406\u7f51\u7edc\u8fde\u63a5\u67b6\u6784\uff1a<\/p>\n<ul>\n<li>\u7ba1\u7406\u7f51\u7edc\uff08management network\uff09<\/li>\n<li>\u6570\u636e\u7f51\u7edc\uff08data network\uff09<\/li>\n<li>\u5916\u90e8\u7f51\u7edc\uff08external network\uff09<\/li>\n<li>API\u7f51\u7edc<\/li>\n<\/ul>\n<p>\u4e24\u79cd\u7f51\u7edc\u7c7b\u578b\uff1a<\/p>\n<ul>\n<li><strong>Tenant network<\/strong>\uff1atenant\u5185\u90e8\u4f7f\u7528\u7684\u7f51\u7edc\n<ul>\n<li><code>Flat<\/code>\uff1a\u6240\u6709VMs\u5728\u540c\u4e00\u4e2a\u7f51\u7edc\u4e2d\uff0c\u4e0d\u652f\u6301VLAN\u53ca\u5176\u5b83\u7f51\u7edc\u9694\u79bb\u673a\u5236\uff1b<\/li>\n<li><code>Local<\/code>\uff1a\u6240\u6709\u7684VMs\u4f4d\u4e8e\u672c\u5730Compute\u8282\u70b9\uff0c\u4e14\u4e0eexternal\u7f51\u7edc\u9694\u79bb\uff1b<\/li>\n<li><code>VLAN<\/code>\uff1a\u901a\u8fc7\u4f7f\u7528VLAN\u7684IDs\u521b\u5efa\u591a\u4e2aproviders\u6216tenant\u7f51\u7edc\uff1b<\/li>\n<li><code>VxLAN\u548cGRE<\/code>\uff1a\u901a\u8fc7\u5c01\u88c5\u6216\u96a7\u9053\u6280\u672f\uff0c\u5b9e\u73b0\u591a\u4e2a\u7f51\u7edc\u95f4\u901a\u4fe1\uff1b<\/li>\n<\/ul>\n<\/li>\n<li><strong>provider network<\/strong>\uff1a\u4e0d\u8f6c\u5c5e\u4e8e\u67d0tenant\uff0c\u4e3a\u5404tenant\u63d0\u4f9b\u901a\u4fe1\u627f\u8f7d\u7684\u7f51\u7edc\uff1b<\/li>\n<\/ul>\n<h3>1. \u51c6\u5907\u6570\u636e\u5e93<\/h3>\n<pre><code>CREATE DATABASE neutron;\nGRANT ALL PRIVILEGES ON neutron.* TO &#039;neutron&#039;@&#039;%&#039; IDENTIFIED BY &#039;neutron123&#039;;\nFLUSH PRIVILEGES;<\/code><\/pre>\n<h3>2. \u521b\u5efa neutron \u670d\u52a1\uff0c\u5e76\u6ce8\u518c<\/h3>\n<pre><code>openstack service create --name neutron --description &quot;OpenStack Networking&quot; network\n\n#\u516c\u5171\nopenstack endpoint create --region RegionOne network public http:\/\/192.168.10.100:9696\n\n#\u79c1\u6709\nopenstack endpoint create --region RegionOne networki nternal http:\/\/192.168.10.100:9696\n\n#\u7ba1\u7406\nopenstack endpoint create --region RegionOne network admin http:\/\/192.168.10.100:9696\n\n## \u9a8c\u8bc1endpoint\nopenstack endpoint list<\/code><\/pre>\n<h3>3. \u914d\u7f6ehaproxy\u8d1f\u8f7d <code>vim \/etc\/haproxy\/haproxy.cfg<\/code><\/h3>\n<pre><code>listen neutron\n    bind 192.168.10.100:9696\n    mode tcp\n    log global\n    balance source\n    server neutron-server 192.168.10.201:9696 check inter 5000 fall 3 rise 3<\/code><\/pre>\n<h3>4. \u91cd\u542f haproxy<\/h3>\n<pre><code>systemctl restart haproxy<\/code><\/pre>\n<h3>5. \u5b89\u88c5 neutron<\/h3>\n<pre><code>yum install -y \\\nopenstack-neutron \\\nopenstack-neutron-ml2 \\\nopenstack-neutron-linuxbridge \\\nebtables<\/code><\/pre>\n<h3>6. \u7f16\u8f91 neutron \u914d\u7f6e\u6587\u4ef6 <code>vim \/etc\/neutron\/neutron.conf<\/code><\/h3>\n<pre><code>connection = mysql+pymysql:\/\/neutron:neutron123@192.168.10.100\/neutron\ncore_plugin = ml2\nservice_plugins = \ntransport_url = rabbit:\/\/openstack:123456@192.168.10.205\nauth_strategy = keystone\n[keystone_authtoken]\nauth_uri = http:\/\/192.168.10.100:5000\nauth_url = http:\/\/192.168.10.100:35357\nmemcached_servers = 192.168.10.100:11211\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nproject_name = service\nusername = neutron\npassword = neutron\nnotify_nova_on_port_status_changes =true\nnotify_nova_on_port_data_changes = true\n[nova]\nauth_url = http:\/\/192.168.10.100:35357\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nregion_name = RegionOne\nproject_name = service\nusername = nova\npassword = nova\nlock_path = \/var\/lib\/neutron\/tmp<\/code><\/pre>\n<h3>7. \u914d\u7f6e ML2\uff08Modular Layer 2\uff09\u63d2\u4ef6<\/h3>\n<p>ML2 \u63d2\u4ef6\u4f7f\u7528 linuxbridge \u673a\u5236\u6765\u4e3a\u5b9e\u4f8b\u521b\u5efa layer-2 \u865a\u62df\u7f51\u7edc\u57fa\u7840\u8bbe\u65bd\u3002<br \/>\n<code>vim \/etc\/neutron\/plugins\/ml2\/ml2_conf.ini<\/code><\/p>\n<pre><code>type_drivers = flat,vlan\ntenant_network_types =\nmechanism_drivers = linuxbridge\nextension_drivers = port_security\nflat_networks = internal\nenable_ipset = true<\/code><\/pre>\n<h3>8. \u914d\u7f6e linuxbridge \u4ee3\u7406 <code>vim \/etc\/neutron\/plugins\/ml2\/linuxbridge_agent.ini<\/code><\/h3>\n<pre><code>physical_interface_mappings = internal:eth0       #\u5185\u90e8\u7f51\u7edc\nenable_vxlan = false\nenable_security_group = true\nfirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver\n#\/usr\/lib\/python2.7\/site-package\/neutron\/agent\/linux\/iptables_firewall.py <\/code><\/pre>\n<h3>9. \u914d\u7f6e DHCP \u4ee3\u7406 <code>vim \/etc\/netron\/dhcp_agent.ini<\/code><\/h3>\n<pre><code>interface_driver = linuxbridge\ndhcp_driver = neutron.agent.linux.dhcp.Dnsmasq\nenable_isolated_metadata = true<\/code><\/pre>\n<h3>10. \u914d\u7f6e\u5143\u6570\u636e\u4ee3\u7406 <code>vim \/etc\/neutron\/metadata_agent.ini<\/code><\/h3>\n<pre><code>nova_metadata_ip = 192.168.10.100\nmetadata_proxy_shared_secret = 1234567<\/code><\/pre>\n<h3>11. \u914d\u7f6e nova \u8c03\u7528 neutron  <code>vim \/etc\/nova\/nova.conf<\/code><\/h3>\n<pre><code>[neutron]\nurl = http:\/\/192.168.10.100:9696\nauth_url = http:\/\/192.168.10.100:35357\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nregion_name = RegionOne\nproject_name = service\nusername = neutron\npassword = neutron\nservice_metadata_proxy = true\nmetadata_proxy_shared_secret = 1234567<\/code><\/pre>\n<h3>12. \u521b\u5efa\u8f6f\u94fe\u63a5<\/h3>\n<pre><code>ln -sv \/etc\/neutron\/plugins\/ml2\/ml2_conf.ini \/etc\/neutron\/plugin.ini<\/code><\/pre>\n<h3>13. \u521d\u59cb\u5316\u6570\u636e\u5e93<\/h3>\n<pre><code>su -s \/bin\/sh -c &quot;neutron-db-manage --config-file \/etc\/neutron\/neutron.conf --config-file \/etc\/neutron\/plugins\/ml2\/ml2_conf.ini upgrade head&quot; neutron<\/code><\/pre>\n<h3>14. \u91cd\u542f nova API<\/h3>\n<pre><code>systemctl restart openstack-nova-api.service<\/code><\/pre>\n<h3>15. \u914d\u7f6e haproxy \u4ee3\u7406 <code>vim \/etc\/haproxy\/haproxy.cfg<\/code><\/h3>\n<pre><code>listen nova-api\n    bind 192.168.10.100:8775\n    mode tcp\n    log global\n    balance source\n    server nova-server 192.168.10.210:8775 check inter 5000 rise 3 fall 3<\/code><\/pre>\n<h3>16. \u542f\u52a8 neutron<\/h3>\n<pre><code>systemctl enable \\\nneutron-server.service \\\nneutron-linuxbridge-agent.service \\\nneutron-dhcp-agent.service \\\nneutron-metadata-agent.service\n\nsystemctl start \\\nneutron-server.service \\\nneutron-linuxbridge-agent.service \\\nneutron-dhcp-agent.service \\\nneutron-metadata-agent.service<\/code><\/pre>\n<h3>17. \u9a8c\u8bc1 neutron \u63a7\u5236\u7aef\u662f\u5426\u6ce8\u518c\u6210\u529f <font color=red>\u6b64\u6b65\u9aa4\u8981\u6c42\u5404\u670d\u52a1\u5668\u65f6\u95f4\u5fc5\u987b\u4e00\u81f4<\/font><\/h3>\n<pre><code>neutron agent-list<\/code><\/pre>\n<h2>\u90e8\u7f72 neutron \u8ba1\u7b97\u8282\u70b9<\/h2>\n<h3>1. \u5b89\u88c5<\/h3>\n<pre><code>yum install -y openstack-neutron-linuxbridge ebtables ipset<\/code><\/pre>\n<h3>2. \u7f16\u8f91\u914d\u7f6e\u6587\u4ef6 <code>vim \/etc\/neutron\/neutron.conf<\/code><\/h3>\n<pre><code>auth_strategy = keystone\ntransport_url = rabbit:\/\/openstack:123456@192.168.10.205\n[keystone_authtoken]\nauth_uri = http:\/\/192.168.10.100:5000\nauth_url = http:\/\/192.168.10.100:35357\nmemcached_servers = 192.168.10.100:11211\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nproject_name = service\nusername = neutron\npassword = neutron\nlock_path = \/var\/lib\/neutron\/tmp<\/code><\/pre>\n<h3>3. \u914d\u7f6e linuxbridge \u4ee3\u7406 <code>vim \/etc\/neutron\/plugins\/ml2\/linuxbridge_agent.ini<\/code><\/h3>\n<pre><code>physical_interface_mappings = internal:eth0\nfirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver\nenable_vxlan = false\nenable_security_group = true<\/code><\/pre>\n<h3>4. \u914d\u7f6e nova \u4f7f\u7528\u7f51\u7edc <code>vim \/etc\/nova\/nova.conf<\/code><\/h3>\n<pre><code>[neutron]\nurl = http:\/\/192.168.10.100:9696\nauth_url = http:\/\/192.168.10.100:35357\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nregion_name = RegionOne\nproject_name = service\nusername = neutron\npassword = neutron<\/code><\/pre>\n<h3>5. \u91cd\u542f nova \u8ba1\u7b97\u670d\u52a1<\/h3>\n<pre><code>sysmtectl restart openstack-nova-compute.service<\/code><\/pre>\n<h3>6. \u542f\u52a8 neutron linuxbridge \u670d\u52a1<\/h3>\n<pre><code>systemctl enable neutron-linuxbridge-agent.service\nsystemctl start neutron-linuxbridge-agent.service<\/code><\/pre>\n<h3>7. neutron \u63a7\u5236\u7aef\u9a8c\u8bc1\u8ba1\u7b97\u8282\u70b9\u662f\u5426\u6ce8\u518c\u6210\u529f<\/h3>\n<pre><code>neutron agent-list<\/code><\/pre>\n<h3>8. \u9a8c\u8bc1 neutron server \u8fdb\u7a0b\u662f\u5426\u6b63\u5e38\u8fd0\u884c<\/h3>\n<pre><code>openstack extension list --network<\/code><\/pre>\n<h2>\u90e8\u7f72\u63a7\u5236\u53f0\u670d\u52a1 horizon<\/h2>\n<p>horizon \u57fa\u4e8e django \u5f00\u53d1\uff0c\u901a\u8fc7 Apache \u7684 wsgi \u6a21\u5757\u8fdb\u884c web \u8bbf\u95ee\u901a\u4fe1\uff0cHorizon \u53ea\u9700\u8981\u66f4\u6539\u914d\u7f6e\u6587\u4ef6\u8fde\u63a5\u5230 keystone \u5373\u53ef\u3002<\/p>\n<h3>1. \u5b89\u88c5 horizon<\/h3>\n<pre><code>yum install -y openstack-dashboard<\/code><\/pre>\n<h3>2. \u7f16\u8f91\u914d\u7f6e\u6587\u4ef6 <code>vim \/etc\/openstack-dashboard\/local_settings<\/code><\/h3>\n<pre><code>OPENSTACK_HOST = &quot;192.168.10.100&quot;\nALLOWED_HOSTS = [&#039;*&#039;,]\n\n#\u914d\u7f6ememcache\u4f1a\u8bdd\u4fdd\u6301\nSESSION_ENGINE = &#039;django.contrib.sessions.backends.cache&#039;        #\u6dfb\u52a0\u6b64\u884c\nCACHES = {        #\u53d6\u6d88\u4e4b\u524d\u7684\u6ce8\u91ca\n    &#039;default&#039;: {\n        &#039;BACKEND&#039;: &#039;django.core.cache.backends.memcached.MemcachedCache&#039;,\n        &#039;LOCATION&#039;: &#039;192.168.10.100:11211&#039;,\n    },\n}\n\n#\u542f\u52a8\u7b2c\u4e09\u65b9 API \u8ba4\u8bc1\nOPENSTACK_KEYSTONE_URL = &quot;http:\/\/%s:5000\/v3&quot; % OPENSTACH_HOST\n\n#\u542f\u7528\u5bf9\u591a\u57df\u7684\u652f\u6301\nOPENSTACK_KEYSTONE_MUULTIDOMAIN_SUPPORT = True\n\n#\u914d\u7f6eAPI\u7248\u672c\nOPENSTACK_API_VERSIONS = {\n##  &quot;data-processing&quot; : 1.1,\n    &quot;identity&quot; : 3,\n    &quot;image&quot; : 2,\n    &quot;volume&quot; : 2,\n##  &quot;compute&quot; : 2,\n}\n\n#\u914d\u7f6e\u9ed8\u8ba4\u57df\nOPENSTACK_KEYSTONE_DEFAULT_DOMAIN = &#039;Default&#039;\n\n#\u914d\u7f6eweb\u754c\u9762\u521b\u5efa\u7684\u7528\u6237\u9ed8\u8ba4\u6743\u9650\nOPENSTACK_KEYSTONE_DEFAULT_ROLE = &quot;user&quot;\n\n#\u5355\u4e00\u6241\u5e73\u7f51\u7edc\u6a21\u5f0f\u4e0b\uff0c\u7981\u7528\u7b2c\u4e09\u5c42\u7f51\u7edc\nOPENSTACK_NEUTRON_NETWORK = {\n    &#039;enable_router&#039;: False,\n    &#039;enable_quotas&#039;: False,\n    &#039;enable_ipv6&#039;: False,\n    &#039;enable_distributed_router&#039;: False,\n    &#039;enable_ha_router&#039;: False,\n    &#039;enable_lb&#039;: False,\n    &#039;enable_firewall&#039;: False,\n    &#039;enable_vpn&#039;: False,\n    &#039;enable_fip_topology_check&#039;: False\n}\n\n#\u914d\u7f6e\u65f6\u533a\nTIME_ZONE = &quot;Asia\/Shanghai&quot; <\/code><\/pre>\n<h3>3. \u91cd\u542fweb\u670d\u52a1<\/h3>\n<pre><code>systemctl restart httpd<\/code><\/pre>\n<h3>4. \u914d\u7f6e haproxy \u4ee3\u7406 <code>vim \/etc\/haproxy\/haproxy.cfg<\/code><\/h3>\n<pre><code>listen horizon\n    bind 192.168.10.100:80\n    mode tcp\n    log global\n    balance source\n    server neutron-server 192.168.10.201:80 check inter 5000 rise 3 fall 3<\/code><\/pre>\n<h3>5. \u91cd\u542f haproxy<\/h3>\n<pre><code>systemctl restart haproxy<\/code><\/pre>\n<h3>6. \u8bbf\u95eeweb\u754c\u9762\uff1a<code>http:\/\/192.168.10.100\/dashboard<\/code><\/h3>\n<h2>\u521b\u5efa\u865a\u62df\u673a<\/h2>\n<h3>1. \u521b\u5efa\u6865\u63a5\u7f51\u7edc<\/h3>\n<pre><code>openstack network create --share --external --provider-physical-network internal --provider-network-type flat internal-net\n## --share \u5728\u9879\u76ee\u4e4b\u95f4\u5171\u4eab\n## --external \u5916\u90e8\u7f51\u7edc<\/code><\/pre>\n<ul>\n<li><code>\/etc\/neutron\/plugins\/ml2\/ml2_conf.ini<\/code> \u63a7\u5236\u7aef\u4e13\u6709<\/li>\n<li><code>\/etc\/neutron\/plugins\/ml2\/linuxbridge_agent.ini<\/code> \u63a7\u5236\u7aef\u548c\u8ba1\u7b97\u8282\u70b9\u5171\u6709<\/li>\n<\/ul>\n<h3>2. \u521b\u5efa\u5b50\u7f51<\/h3>\n<pre><code>openstack subnet create --network internal-net --allocation-pool start=192.168.10.101,end=192.168.10.150 --dns-nameserver 202.106.0.20 --gateway 192.168.10.2 --subnet-range 192.168.10.0\/24 internal<\/code><\/pre>\n<h3>3. \u9a8c\u8bc1\u7f51\u7edc<\/h3>\n<pre><code>openstack network list\nopenstack subnet list\nneutron net-list\nneutron subnet-list<\/code><\/pre>\n<h3>4. \u521b\u5efa\u865a\u62df\u673a\u7c7b\u578b<\/h3>\n<pre><code>#\u6d4b\u8bd5 cirros \u955c\u50cf\nopenstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano\n#\u5b9e\u4f8b\u540d\u79f0 m1.nano<\/code><\/pre>\n<h3>5. \u5b9e\u73b0\u514d\u5bc6\u767b\u5f55<\/h3>\n<pre><code>ssh-keygen -q -N &quot;&quot;\nopenstack keypair create --public-key ~\/.ssh\/id_rsa.pub mykey<\/code><\/pre>\n<h3>6. \u9a8c\u8bc1 key<\/h3>\n<pre><code>openstack keypair list<\/code><\/pre>\n<h3>7. \u521b\u5efa\u5b89\u5168\u7ec4<\/h3>\n<pre><code>openstack security group rule create --proto icmp default<\/code><\/pre>\n<h3>8. \u6dfb\u52a0\u89c4\u5219<\/h3>\n<pre><code>openstack security group rule create --proto tcp --dst-port 22 default<\/code><\/pre>\n<h3>9. \u6700\u7ec8\u9a8c\u8bc1<\/h3>\n<pre><code>#\u5217\u51fa\u865a\u62df\u673a\u7c7b\u578b\nopenstack flavor list\n\n#\u5217\u51fa\u53ef\u7528\u955c\u50cf\nopenstack image list\n\n#\u5217\u51fa\u53ef\u7528\u7f51\u7edc\nopenstack network list\n\n#\u5217\u51fa\u53ef\u7528\u5b89\u5168\u7ec4\nopenstack security group list<\/code><\/pre>\n<p><font color=red>\u4ee5\u4e0a\u9a8c\u8bc1\u5fc5\u987b\u5168\u90e8\u53ef\u7528\uff0c\u624d\u53ef\u4ee5\u542f\u52a8\u865a\u62df\u673a\uff01<\/font><\/p>\n<h3>10. \u542f\u52a8\u865a\u62df\u673a<\/h3>\n<pre><code>openstack server create --flavor m1.nano --image cirros --nic net-id=xxxxxxxxxxxx --security-group default --key-name mykey test-vm\n#net-id \u901a\u8fc7 openstack network list \u67e5\u770b\n#test-vm \u865a\u62df\u673a\u540d\u79f0<\/code><\/pre>\n<h3>11. \u67e5\u770b\u865a\u62df\u673a<\/h3>\n<pre><code>openstack server list<\/code><\/pre>\n<h3>12. \u67e5\u770b\u865a\u62df\u673a\u8bbf\u95ee\u5730\u5740<\/h3>\n<pre><code>openstack console url show test-vm<\/code><\/pre>\n<h2>\u5feb\u901f\u6dfb\u52a0\u8ba1\u7b97\u8282\u70b9<\/h2>\n<p>\u51c6\u5907\u5de5\u4f5c\uff1ayum\u4ed3\u5e93\u3001\u9632\u706b\u5899\u3001selinux\u3001\u4e3b\u673a\u540d\u3001\u65f6\u95f4\u540c\u6b65 \u7b49\u914d\u7f6e\u5b8c\u6bd5\u3002<\/p>\n<h3>1. \u5b89\u88c5\u670d\u52a1<\/h3>\n<pre><code>yum install -y net-tools vim lrzsz tree screen lsof tcpdump\nyum intstall -y centos-release-openstack-ocata.noarch\nyum install -y https:\/\/rdoproject.org\/repos\/rdo-release.rpm\nyum install -y  \\\npython-openstackclient \\\nopenstack-selinux \\\nopenstack-neutron-linuxbridge \\\nebtables \\\nipset <\/code><\/pre>\n<h3>2. \u62f7\u8d1d\u914d\u7f6e\u6587\u4ef6\u81f3\u65b0\u4e3b\u673a<\/h3>\n<ul>\n<li><code>\/etc\/neutron\/neutron.conf<\/code><\/li>\n<li><code>\/etc\/neutron\/plugins\/ml2\/linuxbridge_agent.ini<\/code><\/li>\n<li><code>\/etc\/nova\/nova.conf<\/code>        ## \u4fee\u6539vncserver_proxyclient_address=192.168.10.203\u4e3a\u65b0\u4e3b\u673aIP<\/li>\n<\/ul>\n<h3>3. \u542f\u52a8\u670d\u52a1<\/h3>\n<pre><code>systemctl enable openstack-nova-compute.service\nsystemctl start openstack-nova-compute.service\nsystemctl restart neutron-linuxbridge-agent libvirtd.service<\/code><\/pre>\n<h3>4. \u63a7\u5236\u7aef\u9a8c\u8bc1 nova\u3001neutron \u6ce8\u518c<\/h3>\n<pre><code>nova service-list\nneutron agent-list<\/code><\/pre>\n<h2>\u5b9e\u73b0\u5185\u5916\u7f51\u7ed3\u6784<\/h2>\n<h3>1. \u63a7\u5236\u8282\u70b9\u914d\u7f6e<\/h3>\n<ul>\n<li>\/etc\/neutron\/plugins\/ml2\/linuxbridge_agent.ini \u5f53\u524d\u5168\u90e8\u914d\u7f6e\uff1a\n<pre><code>physical_interface_mappings = internal:eth0,external:eth1\nfirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver\nenable_security_group = true\nenable_vxlan = false<\/code><\/pre>\n<\/li>\n<li>\/etc\/neutron\/plugins\/ml2\/ml2_conf.ini \u5f53\u524d\u5168\u90e8\u914d\u7f6e\uff1a\n<pre><code>type_drivers = flat,vlan\ntenant_network_types =\nmechanism_drivers = linuxbridge\nextension_drivers = port_security\nflat_networks = internal,external\nenable_ipset = true<\/code><\/pre>\n<\/li>\n<li>\u91cd\u542f neutron \u670d\u52a1\n<pre><code>systemctl restart neutron-linuxbridge-agent\nsystemctl restart neutron-server<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>2. \u8ba1\u7b97\u8282\u70b9\u914d\u7f6e<\/h3>\n<ul>\n<li>\/etc\/neutron\/plugins\/ml2\/linuxbridge_agent.ini \u5f53\u524d\u5168\u90e8\u914d\u7f6e\uff1a\n<pre><code>physical_interface_mappings = internal:eth0,external:eth1\nfirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver\nenable_security_group = true\nenable_vxlan = false<\/code><\/pre>\n<\/li>\n<li>\u91cd\u542f neutron \u670d\u52a1\n<pre><code>systemctl restart neutron-linuxbridge-agent<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>3. \u63a7\u5236\u8282\u70b9\u521b\u5efa\u7f51\u7edc<\/h3>\n<pre><code>netron net-create --shared --provider:physical_network external --provider:network_type flat external-net\nnetron subnet-create --name external-subnet --allocation-pool start=10.10.10.100,end=10.10.10.200 --dns-nameserver 114.114.114.114 external-net 10.10.10.0\/24<\/code><\/pre>\n<h3>4. \u9a8c\u8bc1\u5b50\u7f51\u521b\u5efa<\/h3>\n<pre><code>neutron net-list<\/code><\/pre>\n<h2>\u90e8\u7f72\u5757\u5b58\u50a8 cinder<\/h2>\n<p>Openstack \u4ece Folsom \u7248\u672c\u5f00\u59cb\u4f7f\u7528 Cinder \u66ff\u4ee3\u539f\u6765\u7684 Nova-Volume \u670d\u52a1\uff0c\u4e3a Openstack \u63d0\u4f9b\u5757\u5b58\u50a8\u670d\u52a1\u3002<br \/>\nCinder \u63a5\u53e3\u63d0\u4f9b\u4e86\u4e00\u4e9b\u6807\u51c6\u529f\u80fd\uff0c\u5141\u8bb8\u521b\u5efa\u548c\u9644\u52a0\u5757\u8bbe\u5907\u5230\u865a\u62df\u673a\uff08\u5982\uff1a\u521b\u5efa\u5377\u3001\u9644\u52a0\u5377\u3001\u5220\u9664\u5377\u7b49\uff09\uff0c\u8fd8\u6709\u66f4\u591a\u9ad8\u7ea7\u7684\u529f\u80fd\uff0c\u652f\u6301\u6269\u5c55\u5bb9\u91cf\u7684\u80fd\u529b\uff0c\u5feb\u7167\u548c\u521b\u5efa\u865a\u62df\u673a\u955c\u50cf\u514b\u9686\uff0c\u4e3b\u8981\u6d89\u53ca\u5230\u7684\u7ec4\u4ef6\u5982\u4e0b\uff1a<\/p>\n<ul>\n<li><code>cinder-api<\/code>\uff1a\u63a5\u53d7 API \u8bf7\u6c42\uff0c\u5e76\u5c06\u5176\u8def\u7531\u5230 &quot;cinder-volume&quot; \u6267\u884c\uff0c\u5373\u8bf7\u6c42cinder\u8981\u5148\u8bf7\u6c42\u6b64API\uff1b<\/li>\n<li><code>cinder-volume<\/code>\uff1a\u4e0e\u5757\u5b58\u50a8\u670d\u52a1\u548c cinder-scheduler \u8fd9\u6837\u7684\u8fdb\u7a0b\u76f4\u63a5\u4ea4\u4e92\uff0c\u4e5f\u53ef\u4ee5\u4e0e\u8fd9\u4e9b\u8fdb\u7a0b\u901a\u8fc7\u6d88\u606f\u961f\u5217\u8fdb\u884c\u4ea4\u4e92\u3002cinder-volume\u670d\u52a1\u54cd\u5e94\u9001\u5230\u5757\u5b58\u50a8\u670d\u52a1\u7684\u8bfb\u5199\u8bf7\u6c42\u6765\u7ef4\u6301\u72b6\u6001\u3002<\/li>\n<li><code>cinder-scheduler<\/code>\uff1a\u5b88\u62a4\u8fdb\u7a0b\uff0c\u9009\u62e9\u6700\u4f18\u5b58\u50a8\u63d0\u4f9b\u8282\u70b9\u6765\u521b\u5efa\u5377\u3002\u5176\u4e0e &quot;nova-scheduler&quot; \u7ec4\u4ef6\u7c7b\u4f3c\u3002<\/li>\n<li><code>cinder-backup<\/code>\uff1a\u5b88\u62a4\u8fdb\u7a0b\uff0c\u63d0\u4f9b\u4efb\u4f55\u79cd\u7c7b\u5907\u4efd\u5377\u5230\u4e00\u4e2a\u5907\u4efd\u5b58\u50a8\u63d0\u4f9b\u8005\u3002<\/li>\n<li><code>\u6d88\u606f\u961f\u5217<\/code>\uff1a\u5728\u5757\u5b58\u50a8\u7684\u8fdb\u7a0b\u4e4b\u95f4\u8def\u7531\u4fe1\u606f\u3002<\/li>\n<\/ul>\n<h3>1. \u51c6\u5907\u6570\u636e\u5e93<\/h3>\n<pre><code>CREATE DATABASE cinder;\nGRANT ALL PRIVILEGES ON cinder.* TO &#039;cinder&#039;@&#039;%&#039; IDENTIFIED BY &#039;cinder123&#039;;\nFLUSH PRIVILEGES;<\/code><\/pre>\n<h3>2. \u63a7\u5236\u7aef cinder \u670d\u52a1\u6ce8\u518c<\/h3>\n<ul>\n<li>\u521b\u5efa cinder \u7528\u6237\u5e76\u6388\u6743\n<pre><code>source admin-ocata.sh\nopenstack user create --domain default --password-prompt cinder<\/code><\/pre>\n<\/li>\n<li>\u521b\u5efa cinder \u670d\u52a1\n<pre><code>openstack service create --name cinderv2 --description \"OpenStack Block Storage\" volumev2<\/code><\/pre>\n<\/li>\n<li>\u6ce8\u518cv2\u7248\u672c endpoint\n<pre><code>#\u516c\u5171\nopenstack endpoint create --region RegionOne volumev2 public http:\/\/192.168.10.100:8776\/v2\/%\\(project_id\\)s\n#\u79c1\u6709\nopenstack endpoint create --region RegionOne volumev2 internal http:\/\/192.168.10.100:8776\/v2\/%\\(project_id\\)s\n#\u7ba1\u7406\nopenstack endpoint create --region RegionOne volumev2 admin http:\/\/192.168.10.100:8776\/v2\/%\\(project_id\\)s<\/code><\/pre>\n<\/li>\n<li>\u6ce8\u518cv3\u7248\u672c endpoint\n<pre><code>#\u516c\u5171\nopenstack endpoint create --region RegionOne volumev3 public http:\/\/192.168.10.100:8776\/v3\/%\\(project_id\\)s\n#\u79c1\u6709\nopenstack endpoint create --region RegionOne volumev3 internal http:\/\/192.168.10.100:8776\/v3\/%\\(project_id\\)s\n#\u7ba1\u7406\nopenstack endpoint create --region RegionOne volumev3 admin http:\/\/192.168.10.100:8776\/v3\/%\\(project_id\\)s<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>3. \u914d\u7f6e haproxy \u4ee3\u7406 <code>vim \/etc\/haproxy\/haproxy.cfg<\/code><\/h3>\n<pre><code>listen cinder\n    bind 192.168.10.100:8776\n    mode tcp\n    log global\n    balance source\n    server cinder-server 192.168.10.201:8776 check inter 5000 rise 3 fall 3<\/code><\/pre>\n<h3>4. \u63a7\u5236\u7aef\u5b89\u88c5 cinder \u7ec4\u4ef6<\/h3>\n<pre><code>yum install -y openstack-cinder<\/code><\/pre>\n<h3>5. \u4fee\u6539\u914d\u7f6e\u6587\u4ef6 <code>vim \/etc\/cinder\/cinder.conf<\/code><\/h3>\n<pre><code>[DEFAULT]\nmy_ip = 192.168.10.201\nauth_strategy = keystone\ntransport_url = rabbit:\/\/openstack:123456@192.168.10.205\n[database]\nconnection = mysql+pymysql:\/\/cinder:cinder123@192.168.10.100\/cinder\n[keystone_authtoken]\nauth_uri = http:\/\/192.168.10.100:5000\nauth_url = http:\/\/192.168.10.100:35357\nmemcached_servers = 192.168.10.100:11211\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nproject_name = service\nusername = cinder\npassword = cinder\n[oslo_concurrency]\nlock_path = \/var\/lib\/cinder\/tmp<\/code><\/pre>\n<h3>6. \u521b\u5efa\u5e93\u3001\u8868<\/h3>\n<pre><code>su -s \/bin\/sh -c &quot;cinder-manage db sync&quot; cinder<\/code><\/pre>\n<h3>7. \u63a7\u5236\u7aef\u91cd\u542f nova-api \u670d\u52a1<\/h3>\n<pre><code>systemctl restart openstack-nova-api.service<\/code><\/pre>\n<h3>8. \u542f\u52a8 cinder<\/h3>\n<pre><code>systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service\nsystemctl start openstack-cinder-api.service openstack-cinder-scheduler.service<\/code><\/pre>\n<h3>9. \u914d\u7f6e\u8ba1\u7b97\u8282\u70b9\u4f7f\u7528 cinder \u5b58\u50a8<\/h3>\n<ul>\n<li>\u7f16\u8f91\u914d\u7f6e\u6587\u4ef6 <code>vim \/etc\/nova\/nova.conf<\/code>\n<pre><code>[cinder]\nos_region_name=RegionOne<\/code><\/pre>\n<\/li>\n<li>\u91cd\u542f nova \u670d\u52a1\n<pre><code>systemctl restart libvirtd.service openstack-nova-compute.service<\/code><\/pre>\n<\/li>\n<li>\u9a8c\u8bc1 cinder \u63a7\u5236\u7aef\n<pre><code>openstack volume service list<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>10. \u914d\u7f6e\u5b58\u50a8\u8282\u70b9<\/h3>\n<p>\u8fd9\u91cc\u4ee5\u5b58\u50a8\u8282\u70b9\u4f7f\u7528lvm\u4e3a\u4f8b\u3002<\/p>\n<h4>10.1 \u5b89\u88c5\u7ec4\u4ef6<\/h4>\n<pre><code>yum install -y openstack-cinder tragetcli python-keystone<\/code><\/pre>\n<h4>10.2 \u7f16\u8f91\u914d\u7f6e\u6587\u4ef6 <code>vim \/etc\/cinder\/cinder.conf<\/code><\/h4>\n<pre><code>[DEFAULT]\nmy_ip = 192.168.10.205\nglance_api_servers = http:\/\/192.168.10.100:9292\nauth_strategy = keystone\nenabled_backends = lvm\ntransport_url = rabbit:\/\/openstack:123456@192.168.10.205\n[database]\nconnection = mysql+pymysql:\/\/cinder:cinder123@192.168.10.100\/cinder\n[keystone_authtoken]\nauth_uri = http:\/\/192.168.10.100:5000\nauth_url = http:\/\/192.168.10.100:35357\nmemcached_servers = 192.168.10.100:11211\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nproject_name = service\nusername = cinder\npassword = cinder\n[oslo_concurrency]\nlock_path = \/var\/lib\/cinder\/tmp\n[lvm]\nvolume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver\nvolume_group = cinder-volumes\niscsi_protocol = iscsi\niscsi_helper = lioadm\nvolume_backend_name=Openstack-lvm<\/code><\/pre>\n<h4>10.3 \u542f\u52a8 cinder \u670d\u52a1<\/h4>\n<pre><code>systemctl enable openstack-cinder-volume.service target.service\nsystemctl start openstack-cinder-volume.service target.service<\/code><\/pre>\n<h4>10.4 \u63a7\u5236\u7aef\u9a8c\u8bc1 cinder \u6ce8\u518c<\/h4>\n<pre><code>openstack volume service list<\/code><\/pre>\n<h3>11. \u4f7f\u7528 NFS \u4f5c\u4e3a Openstack \u540e\u7aef\u5b58\u50a8<\/h3>\n<h4>11.1 \u5b89\u88c5 nfs \u670d\u52a1\u5668<\/h4>\n<pre><code>yum install nfs-utils rpcbind\nmkdir \/nfsdata\/\necho &#039;\/nfsdata    *(rw,no_root_squash)&#039;  &gt;&gt; \/etc\/exports\nsystemctl start nfs\nsystemctl enable nfs<\/code><\/pre>\n<h4>11.2 \u7f16\u8f91 cinder \u4e3b\u914d\u7f6e\u6587\u4ef6 <code>vim \/etc\/cinder\/cinder.conf<\/code><\/h4>\n<pre><code>enabled_backends = nfs\n[nfs]\nvolume_backend_name = openstack-NFS        #\u5b9a\u4e49\u540d\u79f0\uff0c\u540e\u9762\u505a\u5173\u8054\u7684\u65f6\u5019\u4f7f\u7528\nvolume_driver = cinder.volume.drivers.nfs.NfsDriver        #\u9a71\u52a8\nnfs_shares_config = \/etc\/cinder\/nfs_shares        #\u5b9a\u4e49 NFS \u6302\u8f7d\u7684\u914d\u7f6e\u6587\u4ef6\u8def\u5f84\nnfs_mount_point_base = $state_path\/mnt        #\u5b9a\u4e49 NFS \u6302\u8f7d\u70b9<\/code><\/pre>\n<h4>11.3 \u521b\u5efa nfs \u6302\u8f7d\u914d\u7f6e\u6587\u4ef6<\/h4>\n<pre><code>echo &#039;192.168.10.205:\/nfsdata&#039; &gt; \/etc\/cinder\/nfs_shares\nchown root.cinder \/etc\/cinder\/nfs_shares\nsystemctl restart openstack-cinder-volume.service<\/code><\/pre>\n<h4>11.4 \u9a8c\u8bc1 nfs<\/h4>\n<pre><code>cinder service-list<\/code><\/pre>\n<h4>11.5 \u521b\u5efa\u78c1\u76d8\u7c7b\u578b\u5e76\u5173\u8054<\/h4>\n<p>\u5426\u5219\u5728 Openstack \u7ba1\u7406\u754c\u9762\u521b\u5efa\u78c1\u76d8\u7684\u65f6\u5019\uff0c\u4e0d\u80fd\u9009\u62e9\u65f6 NFS \u8fd8\u662f\u5176\u4ed6\u7c7b\u578b\u3002<\/p>\n<pre><code>#\u521b\u5efa\u7c7b\u578b\ncinder type-create lvm\ncinder type-create nfs\n\n#\u5173\u8054\nsource admin-ocata.sh\ncinder type-key lvm set volume_backend_name=Openstack-lvm\ncinder type-key nfs set volume_backend_name=openstack-NFS<\/code><\/pre>\n<h2>\u5b9e\u73b0 VPC \u81ea\u5b9a\u4e49\u7f51\u7edc<\/h2>\n<p>\u4e13\u7528\u7f51\u7edc VPC\uff08Virtual Private Clude\uff09\u662f\u4e00\u4e2a\u4e92\u76f8\u9694\u79bb\u7684\u7f51\u7edc\u73af\u5883\uff0c\u6bcf\u4e2a\u4e13\u6709\u7f51\u7edc\u4e4b\u95f4\u903b\u8f91\u4e0a\u5f7b\u5e95\u9694\u79bb\uff0c\u53ef\u4ee5\u81ea\u5df1\u9009\u62e9\u81ea\u5df1\u7684IP\u5730\u5740\u8303\u56f4\u3001\u5212\u5206\u7f51\u6bb5\u3001\u914d\u7f6e\u8def\u7531\u8868\u548c\u7f51\u5173\u7b49\uff0c\u4ece\u800c\u5b9e\u73b0\u5b89\u5168\u800c\u8f7b\u677e\u7684\u8d44\u6e90\u8bbf\u95ee\u548c\u5e94\u7528\u7a0b\u5e8f\u8bbf\u95ee\u3002<\/p>\n<h3>1. \u5b89\u88c5\u76f8\u5173\u8f6f\u4ef6<\/h3>\n<pre><code>yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables<\/code><\/pre>\n<h3>2. \u7f16\u8f91\u914d\u7f6e\u6587\u4ef6 <code>vim \/etc\/neutron\/neutron.conf<\/code><\/h3>\n<pre><code>[DEFAULT]\nauth_strategy = keystone\ncore_plugin = ml2\nservice_plugins = router\nallow_overlapping_ips = True\nnotify_nova_on_port_status_changes = true\nnotify_nova_on_port_data_changes = true\ntransport_url = rabbit:\/\/openstarck:123456@192.168.10.205\n[database]\nconnection = mysql+pymysql:\/\/neutron:neutron123@192.168.10.100\/neutron\n[keystone_authtoken]\nauth_uri = http:\/\/192.168.10.100:5000\nauth_url = http:\/\/192.168.10.100:35357\nmemcached_servers = 192.168.10.100:11211\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nproject_name = service\nusername = neutron\npassword = neutron\n[nova]\nauth_url = http:\/\/192.168.10.100:35357\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nregion_name = RegionOne\nproject_name = service\nusername = nova\npassword = nova\n[oslo_concurrency]\nlock_path = \/var\/lib\/neutron\/tmp<\/code><\/pre>\n<h3>3. \u914d\u7f6e ML2 \u63d2\u4ef6 <code>vim \/etc\/neutron\/plugins\/ml2\/ml2_conf.ini<\/code><\/h3>\n<pre><code>[Default]\n[ml2]\ntype_drivers = flat,vlan,vxlan\ntenant_network_types = vxlan\nmechanism_drivers = linuxbridge,l2population\nextension_drivers = port_security\n[ml2_type_flat]\nflat_networks = internal\n[ml2_type_vxlan]\nvni_ranges = 1:1000        #vxlan\u8303\u56f4\n[securitygroup]\nenable_ipset = true<\/code><\/pre>\n<h3>4. \u914d\u7f6e linuxbridge \u4ee3\u7406 <code>vim \/etc\/neutron\/plugins\/ml2\/linuxbridge_agent.ini<\/code><\/h3>\n<pre><code>[DEFAULT]\n[agent]\n[linux_bridge]\nphysical_interface_mappings = internal:eth0,external:eth1\n[securitygroup]\nfirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver\nenable_security_group = true\n[vxlan]\nenable_vxlan = true\nlocal_ip = 192.168.10.201\nl2_population = true<\/code><\/pre>\n<h3>5. \u914d\u7f6e\u4e09\u5c42\u8def\u7531\u4ee3\u7406 <code>vim \/etc\/neutron\/l3_agent.ini<\/code><\/h3>\n<pre><code>interface_driver = linuxbridge<\/code><\/pre>\n<h3>6. \u914d\u7f6eDHCP\u4ee3\u7406 <code>vim \/etc\/neutron\/dhcp_agent.ini<\/code><\/h3>\n<pre><code>[DEFAULT]\ninterface_driver = linuxbridge\ndhcp_driver = neutron.agent.linux.dhcp.Dnsmasq\nenable_isolated_metadata = true<\/code><\/pre>\n<h3>7. \u542f\u52a8\u4e09\u5c42\u7f51\u7edc\u8f6c\u53d1\u670d\u52a1<\/h3>\n<pre><code>systemctl enable neutron-l3-agent.service\nsystemctl start neutron-l3-agent.service<\/code><\/pre>\n<h3>8. \u914d\u7f6e\u5143\u6570\u636e\u4ee3\u7406 <code>vim \/etc\/neutron\/metadata_agent.ini<\/code><\/h3>\n<pre><code>nova_metadata_ip = 192.168.10.100\nmetadata_proxy_shared_secret = 123456<\/code><\/pre>\n<h3>9. \u914d\u7f6e nova \u4f7f\u7528\u7f51\u7edc <code>vim \/etc\/nova\/nova.conf<\/code><\/h3>\n<pre><code>[neutron]\nurl = http:\/\/192.168.10.100:9696\nauth_url = http:\/\/192.168.10.100:35357\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nregion_name = RegionOne\nproject_name = service\nusername = neutron\npassword = neutron\nservice_metadata_proxy = true\nmetadata_proxy_shared_secret = 123456<\/code><\/pre>\n<h3>10. \u91cd\u542f\u63a7\u5236\u7aef\u670d\u52a1<\/h3>\n<pre><code>systemctl enable \\\nopenstack-nova-api.service \\\nneutron-server.service \\\nneutron-linuxbridge-agent.service \\\nneutron-dhcp-agent.service \\\nneutron-metadata-agent.service \\\nneutronl3-agent.service\n\nreboot<\/code><\/pre>\n<h3>11. \u9a8c\u8bc1\u63a7\u5236\u7aef<\/h3>\n<pre><code>source admin-ocata.sh\nopenstack network agent list<\/code><\/pre>\n<h3>12. \u5b89\u88c5\u8ba1\u7b97\u8282\u70b9<\/h3>\n<pre><code>yum install -y openstack-neutron-linuxbridge ebtables ipset<\/code><\/pre>\n<h3>13. \u7f16\u8f91\u914d\u7f6e\u6587\u4ef6 <code>vim \/etc\/neutron\/neutron.conf<\/code><\/h3>\n<pre><code>[DEFAULT]\nauth_strategy = keystone\ntransport_url = rabbit:\/\/openstack:123456@192.168.10.205\n[keystone_authtoken]\nauth_uri = http:\/\/192.168.10.100:500\nauth_url = http:\/\/192.168.10.100:35357\nmemcached_servers = 192.168.10.100:11211\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nproject_name = service\nusername = neutron\npassword = neutron\n[oslo_concurrency]\nlock_path = \/var\/lib\/neutron\/tmp<\/code><\/pre>\n<h3>14. \u914d\u7f6e nova \u4f7f\u7528 neutron <code>vim \/etc\/nova\/nova.conf<\/code><\/h3>\n<pre><code>[neutron]\nurl = http:\/\/192.168.10.100:9696\nauth_url = http:\/\/192.168.10.100:35357\nauth_type = password\nproject_domain_name = default\nuser_domain_name = default\nregion_name = RegionOne\nproject_name = service\nusername = neutron\npassword = neutron<\/code><\/pre>\n<h3>15. \u914d\u7f6e linuxbridge \u4ee3\u7406 <code>vim \/etc\/neutron\/plugins\/ml2\/linuxbridge_agent.ini<\/code><\/h3>\n<pre><code>physical_interface_mappings = internal:eth0,external:eth1\nenable_vxlan = true\nlocal_ip = 192.168.10.202\nl2_population = true\nenable_security_group = true\nfirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver<\/code><\/pre>\n<h3>16. \u590d\u5236\u914d\u7f6e\u6587\u4ef6\u81f3\u5176\u5b83\u8ba1\u7b97\u8282\u70b9<\/h3>\n<p>\u5c06 <code>neutron.conf<\/code>\u3001<code>nova.conf<\/code>\u3001<code>linuxbridge_agent.ini<\/code>\u590d\u5236\u5230\u5176\u5b83\u8ba1\u7b97\u8282\u70b9\u3002<\/p>\n<ul>\n<li>\u5728\u76ee\u6807\u8ba1\u7b97\u8282\u70b9\u4fee\u6539 local_ip \u4e3a\u672c\u673aIP\uff1a<code>vim \/etc\/neutron\/plugins\/ml2\/linuxbridge_agent.ini<\/code>\n<pre><code>local_ip = 192.168.10.206<\/code><\/pre>\n<\/li>\n<li>\u5728\u76ee\u6807\u8ba1\u7b97\u8282\u70b9\u4fee\u6539 vnc \u4ee3\u7406\u76d1\u542c\u5730\u5740\uff1a<code>vim \/etc\/nova\/nova.conf<\/code>\n<pre><code>vncserver_proxyclient_address=192.168.10.206<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>17. \u5404\u8ba1\u7b97\u8282\u70b9\u91cd\u542f\u670d\u52a1<\/h3>\n<pre><code>systemctl enable openstack-nova-compute.service\nsystemctl restart openstack-nova-compute.service\nsystemctl enable neutron-linuxbridge-agent.service\nsystemctl restart neutron-linuxbridge-agent.service<\/code><\/pre>\n<h3>18. \u9a8c\u8bc1<\/h3>\n<pre><code>source admin-ocata.sh\n\n## \u9a8c\u8bc1 neutron \u8fdb\u7a0b\nopenstack extension list --network\n\n## \u9a8c\u8bc1 neutron-agent\nneutron agent-list<\/code><\/pre>\n<h3>19. \u521b\u5efa\u81ea\u670d\u52a1\u7f51\u7edc<\/h3>\n<ul>\n<li>\u67e5\u770b\u5f53\u524d\u7f51\u7edc\uff1a<code>openstack network list<\/code><\/li>\n<li>\u521b\u5efa\u81ea\u670d\u52a1\u7f51\u7edc\uff1a\n<pre><code>source admin-ocata.sh\nopenstack network create selfnetwork<\/code><\/pre>\n<\/li>\n<li>\u521b\u5efa\u81ea\u5b9a\u4e49\u5b50\u7f51\uff1a\n<pre><code>openstack subnet create --network selfnetwork --dns-nameserver 8.8.8.8 --gateway 172.16.1.1 --subnet-range 172.16.1.0\/24 selfnetwork-net<\/code><\/pre>\n<\/li>\n<li>\u521b\u5efa\u8def\u7531\u5668\uff1a\n<pre><code>openstack router create selfrouter<\/code><\/pre>\n<\/li>\n<li>\u6dfb\u52a0\u5185\u7f51\u5b50\u7f51\u5230\u8def\u7531\n<pre><code>neutron router-interface-add selfrouter selfnetwork-net<\/code><\/pre>\n<\/li>\n<li>\u8bbe\u7f6e\u8def\u7531\u5668\u7f51\u5173\n<pre><code>neutron router-gateway-set selfrouter internal-net<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>20. \u914d\u7f6e horizen \u652f\u6301\u4e09\u5c42\u7f51\u7edc <code>vim \/etc\/openstack-dashboard\/local_settings<\/code><\/h3>\n<pre><code>OPENSTACK_NEUTRON_NETWORK = {\n    &#039;enable_router&#039;: True,\n    &#039;enable_quotas&#039;: True,\n    &#039;enable_ipv6&#039;: True,\n    &#039;enable_distributed_router&#039;: True,\n    &#039;enable_ha_router&#039;: True,\n    &#039;enable_lb&#039;: True,\n    &#039;enable_firewall&#039;: True,\n    &#039;enable_vpn&#039;: True,\n    &#039;enable_fip_topology_check&#039;: True,\n...<\/code><\/pre>\n<h3>21. \u91cd\u542f httpd \u670d\u52a1<\/h3>\n<pre><code>systemctl restart httpd<\/code><\/pre>\n<h3>22. \u9a8c\u8bc1<\/h3>\n<ul>\n<li>\u9a8c\u8bc1\u5b50\u7f51\uff1a\n<pre><code>openstack network list<\/code><\/pre>\n<\/li>\n<li>\u9a8c\u8bc1\u7f51\u7edc\u547d\u540d\u7a7a\u95f4\uff1a <em>\u63a7\u5236\u7aef\u6709\u4e00\u4e2aqrouter\u547d\u540d\u7a7a\u95f4\uff0c\u6bcf\u4e2a\u8282\u70b9\u7531\u4e00\u4e2aqdhcp\u547d\u540d\u7a7a\u95f4<\/em>\n<pre><code>ip netns<\/code><\/pre>\n<\/li>\n<li>\u5217\u51fa\u8def\u7531\u5668\u7aef\u53e3:\n<pre><code>neutron router-port-list router<\/code><\/pre>\n<\/li>\n<\/ul>\n<h2>Openstack \u955c\u50cf\u5236\u4f5c<\/h2>\n<p>\u505a\u955c\u50cf\u5c31\u662f\u5728\u5bbf\u4e3b\u673a\u6700\u5c0f\u5316\u5b89\u88c5\u7cfb\u7edf\u5e76\u914d\u7f6e\u4f18\u5316\uff0c\u4e4b\u540e\u5c06\u865a\u62df\u673a\u5173\u673a\uff0c\u7136\u540e\u5c06\u865a\u62df\u673a\u78c1\u76d8\u6587\u4ef6\u4e0a\u4f20\u81f3 glance \u5373\u53ef\u3002<\/p>\n<h3>1. \u7f51\u7edc\u73af\u5883\u51c6\u5907<\/h3>\n<ul>\n<li>\u5b89\u88c5\u7f51\u5361\u6865\u63a5\u5de5\u5177\uff1a\n<pre><code>yum install bridge-utils -y<\/code><\/pre>\n<\/li>\n<li>bond0 \u914d\u7f6e\uff1a <code>vim \/etc\/sysconfig\/network-scripts\/ifcfg-bond0<\/code>\n<pre><code>BOOTPROTO=static\nNAME=bond0\nDEVICE=bond0\nONBOOT=yes\nBONDING_MASTER=yes\nBONDING_OPTS=\"mode=1 miimon=100\"        #\u6307\u5b9a\u7ed1\u5b9a\u7c7b\u578b\u4e3a1\u53ca\u94fe\u8def\u72b6\u6001\u76d1\u6d4b\u95f4\u9694\u65f6\u95f4\nBRIDGE=br0    #\u6865\u63a5\u5230br0<\/code><\/pre>\n<\/li>\n<li>br0 \u914d\u7f6e\uff1a <code>vim \/etc\/sysconfig\/network-scripts\/ifcfg-br0<\/code>\n<pre><code>TYPE=Bridge\nBOOTPROTO=static\nNAME=br0\nDEVICE=br0\nONBOOT=yes\nIPADDR=192.168.10.50\nNETMASK=255.255.255.0\nGATEWAY=192.168.10.2\nDNS1=202.106.0.20<\/code><\/pre>\n<\/li>\n<li>bond1 \u914d\u7f6e\uff1a<code>vim \/etc\/sysconfig\/network-scripts\/ifcfg-bond1<\/code>\n<pre><code>BOOTPROTO=static\nNAME=bond1\nDEVICE=bond1\nONBOOT=yes\nBONDING_MASTER=yes\nBONDING_OPTS=\"mode=1 miimon=100\"\nBRIDGE=br1<\/code><\/pre>\n<\/li>\n<li>br1 \u914d\u7f6e\uff1a<code>vim \/etc\/sysconfig\/network-scripts\/ifcfg-br1<\/code>\n<pre><code>TYPE=Bridge\nBOOTPROTO=static\nNAME=br1\nDEVICE=br1\nONBOOT=yes\nIPADDR=192.168.20.50\nNETMASK=255.255.255.0<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>2. \u5b89\u88c5\u56fe\u5f62\u754c\u9762\u652f\u6301<\/h3>\n<pre><code>yum groupinstall &quot;GNOME Desktop&quot; -y<\/code><\/pre>\n<h3>3. \u91cd\u542f\u7cfb\u7edf\u540e\uff0c\u5b89\u88c5\u57fa\u7840\u73af\u5883<\/h3>\n<pre><code>yum install -y qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install<\/code><\/pre>\n<h3>4. \u521b\u5efa\u78c1\u76d8<\/h3>\n<pre><code>qemu-img create -f qcow2 \/var\/lib\/libvirt\/images\/CentOS-7-x86_64.qcow2 10G        #\u4f7f\u7528 qcow2 \u683c\u5f0f\uff0c\u968f\u4f7f\u7528\u91cf\u52a8\u6001\u589e\u957f<\/code><\/pre>\n<h3>5. \u4e0b\u8f7d ISO \u955c\u50cf\u5e76\u5b89\u88c5<\/h3>\n<pre><code>virt-install --virt-type kvm --name CentOS7-x86_64 --ram 1024 --cdrom=\/opt\/CentOS-7-x86_64-Minimal-1511.iso --disk path=\/var\/lib\/libvirt\/images\/CentOS7-x86_64.qcow2 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole<\/code><\/pre>\n<h3>6. \u4f7f\u7528vnc\u8fde\u63a5\u865a\u62df\u673a\uff0c\u5e76\u5b8c\u6210\u5b89\u88c5<\/h3>\n<ul>\n<li>\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u7ed9\u865a\u62df\u673a\u65b0\u6dfb\u52a0\u4e00\u5757\u7f51\u5361\uff0c\u6700\u7ec8\u5b9e\u73b0\u955c\u50cf\u865a\u62df\u673a\u6709\u4e24\u5757\u7f51\u5361\u3002\n<pre><code>virt-manager  #\u4f7f\u7528\u865a\u62df\u673a\u7ba1\u7406\u5668\u6dfb\u52a0\u7f51\u5361<\/code><\/pre>\n<\/li>\n<li>\u66f4\u6539yum\u6e90\uff1a\n<pre><code>yum install -y wget\nwget -O \/etc\/yum.repos.d\/CentOS-Base.repo http:\/\/mirrors.aliyun.com\/repo\/Centos-7.repo\nwget -O \/etc\/yum.repos.d\/epel.repo http:\/\/mirrors.aliyun.com\/repo\/epel-7.repo<\/code><\/pre>\n<\/li>\n<li>\u5b89\u88c5\u5e38\u7528\u547d\u4ee4:\n<pre><code>yum install -y net-tools vim lrzsz tree screen lsof ntpdate telnet acpid    <\/code><\/pre>\n<\/li>\n<li>\u5173\u95ed\u9632\u706b\u5899\u53caselinux\uff1a\n<pre><code>systemctl disable NetworkManager\nsystemctl disbale firewalld\nsed -i 's\/SELINUX=enforcing\/SELINUX=disabled\/g' \/etc\/selinux\/config<\/code><\/pre>\n<\/li>\n<li>\u66f4\u6539\u4e3b\u673a\u540d\uff08\u7565\uff09<\/li>\n<li>\u514d\u79d8\u94a5\u767b\u5f55\uff08\u7565\uff09<\/li>\n<li><font color=red>\u4fee\u6539\u7f51\u5361\u7684 mtu \uff0c\u5426\u5219 ssh \u65e0\u6cd5\u8fde\u63a5<\/font> <code>vim \/etc\/rc.d\/rc.local<\/code>\n<pre><code>ifconfig eth0 mtu 1450\nifconfig eth1 mtu 1450<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>6. \u5173\u673a\uff0c\u590d\u5236\u955c\u50cf\u81f3\u63a7\u5236\u7aef<\/h3>\n<pre><code>cd \/var\/lib\/libvirt\/images\/\nscp CentOS-7-x86_64.qcow2 192.168.10.201:\/root\/<\/code><\/pre>\n<h3>7. \u4e0a\u4f20\u955c\u50cf\u81f3 glance<\/h3>\n<pre><code>source admin-ocata.sh\nopenstack image create &quot;CentOS-7-x86_64-template&quot; --file \/root\/CentOS-7-x86_64.qcow2 --disk-format qcow2 --container-format bare --public<\/code><\/pre>\n<h3>8. \u9a8c\u8bc1\u955c\u50cf<\/h3>\n<pre><code>openstack image list<\/code><\/pre>\n<h3>\u5236\u4f5c WIN2008 R2 \u955c\u50cf<\/h3>\n<ul>\n<li>\u521b\u5efa\u7cfb\u7edf\u78c1\u76d8\uff1a\n<pre><code>qemu-img create -f qcow2 \/os\/images\/Windows-2008-r2-x86_64.qcow2 20G<\/code><\/pre>\n<\/li>\n<li>\u5b89\u88c5\n<pre><code>virt-install \\\n--virt-type kvm \\\n--name Windwos-2008_R2-x86_64 \\\n--ram 1024 \\\n--cdrom=\/os\/iso\/windows_server_2008_r2.iso \\\n--disk path=\/os\/images\/Windows-2008-r2-x86_64.qcow2 \\\n--network bridge=br0 \\\n--graphics vnc,listen=0.0.0.0 \\\n--noautoconsole<\/code><\/pre>\n<\/li>\n<li>\u5b89\u88c5\u5e76\u8bbe\u7f6e\u5b8c\u6210\u540e\uff0c\u4f7f\u7528\u7cfb\u7edf\u81ea\u5e26\u5de5\u5177\uff0c\u91cd\u65b0\u5c01\u88c5\u865a\u62df\u673a <code>c:\\windows\\system32\\sysprep\\sysprep.exe<\/code><\/li>\n<li>\u5c01\u88c5\u5b8c\u6210\u540e\uff0c\u5c06\u955c\u50cf\u62f7\u8d1d\u81f3\u63a7\u5236\u7aef\uff1a\n<pre><code>scp \/os\/images\/Windwos-2008-r2-x86_64.qcow2 192.168.10.201:\/root\/<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>\u57fa\u4e8e\u5b98\u65b9 GenericCloud 7.2.1511 \u955c\u50cf\u5236\u4f5c<\/h3>\n<ul>\n<li>\u4e0b\u8f7d\u5b98\u65b9\u955c\u50cf\uff1a\n<pre><code>wget http:\/\/cloud.centos.org\/centos\/7\/images\/CentOS-7-x86_64-GenericCloud-1511.qcow2.xz\nxz -d CentOS-7-x86_64-GenericCloud-1511.qcow2.xz\nmv CentOS-7-x86_64-GenericCloud-1511.qcow2 \/os\/images\/<\/code><\/pre>\n<\/li>\n<li>\u5b89\u88c5\u7cfb\u7edf\uff1a\n<pre><code>vir-install \\\n--virt-type kvm \\\n--name CentOS-GenericCloud-7.2-x86_64 \\\n--ram 1024 \\\n--cdrom=\/os\/iso\/CentOS-7-x86_64-Minimal-1511.iso \\\n--disk path=\/os\/images\/CentOS-7-x86_64-GenericCloud-1511.qcow2 \\\n--network bridge=br0 \\\n--graphics vnc,listen=0.0.0.0 \\\n--noautoconsole<\/code><\/pre>\n<\/li>\n<li>\u91cd\u8bbe\u5bc6\u7801\uff1a\n<pre><code>yum install libguestfs-tools\nvirt-customize -a \/os\/images\/CentOS-7-x86_64-GenericCloud-1511.qcow2 --root-password password:123456<\/code><\/pre>\n<\/li>\n<li>\u66f4\u6539yum\u6e90\uff1a\n<pre><code>yum install -y wget\nwget -O \/etc\/yum.repos.d\/CentOS-Base.repo http:\/\/mirrors.aliyun.com\/repo\/Centos-7.repo\nwget -O \/etc\/yum.repos.d\/epel.repo http:\/\/mirrors.aliyun.com\/repo\/epel-7.repo<\/code><\/pre>\n<\/li>\n<li>\u5b89\u88c5\u5e38\u7528\u547d\u4ee4:\n<pre><code>yum install -y net-tools vim lrzsz tree screen lsof ntpdate telnet tcpdump gcc gcc-c++ pcre pcre-devel zip zip-devel unzip openssl openssl-devel    <\/code><\/pre>\n<\/li>\n<li>\u5173\u95ed\u9632\u706b\u5899\u53caselinux\uff1a\n<pre><code>systemctl disable NetworkManager\nsystemctl disbale firewalld\nsed -i 's\/SELINUX=enforcing\/SELINUX=disabled\/g' \/etc\/selinux\/config<\/code><\/pre>\n<\/li>\n<\/ul>\n<h2>Openstack \u4f01\u4e1a\u5e94\u7528\u6848\u4f8b<\/h2>\n<h3>1. quota \u76f8\u5173\u914d\u7f6e<\/h3>\n<ul>\n<li>\u67e5\u770b\u5f53\u524d\u914d\u989d\n<pre><code>neutron quota-show admin<\/code><\/pre>\n<\/li>\n<li>\u67e5\u770b openstack \u914d\u7f6e\u6587\u4ef6\u662f\u5426\u5f00\u542f\u914d\u989d\u9650\u5236<\/li>\n<li>\n<p>web\u7aef\u4fee\u6539\u914d\u7f6e\uff0c\u6216\u8005\u4fee\u6539\u914d\u7f6e\u6587\u4ef6 <\/p>\n<ul>\n<li>\n<p>\u63a7\u5236\u8282\u70b9\uff1a<\/p>\n<pre><code>#vim \/etc\/neutron\/neutron.conf\n[quotas]\nquota_network = 10\nquota_subnet = 10\nquota_port = 5000\nquota_driver = neutron.db.quota.driver.DbQuotaDriver\nquota_router = 10\nquota_floatingip = 1000\nquota_security_group = 10\nquota_security_group_rule = 100\n\n#\u91cd\u542f neutron \u670d\u52a1\nsystemctl restart \\\nopenstack-nova-api.service \\\nneutron-server.service \\\nneutron-linuxbridge-agent.service \\\nneutron-dhcp-agent.service \\\nneutron-metadata-agent.service<\/code><\/pre>\n<\/li>\n<li>\n<p>\u8ba1\u7b97\u8282\u70b9\uff1a<\/p>\n<pre><code>#vim \/etc\/neutron\/neutron.conf\n[quotas]\nquota_network = 10\nquota_subnet = 10\nquota_port = 5000\nquota_driver = neutron.db.quota.driver.DbQuotaDriver\nquota_router = 10\nquota_floatingip = 1000\nquota_security_group = 10\nquota_security_group_rule = 100\n\n#\u91cd\u542f neutron \u670d\u52a1\nsystemctl restart neutron-linuxbridge-agent.service        <\/code><\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li>\u9a8c\u8bc1\u5f53\u524d\u914d\u989d\n<pre><code>neutron quota-show service<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>2. \u4fee\u6539\u5b9e\u4f8bIP<\/h3>\n<ul>\n<li>\u627e\u51fa\u5b9e\u4f8bID:\n<pre><code>openstack port list | grep 192.168.10.103<\/code><\/pre>\n<\/li>\n<li>\u5728\u6570\u636e\u5e93\u4e2d\u67e5\u627e\u5b9e\u4f8bID\u7684\u6761\u76ee:\n<pre><code>USE neutron;\n#\u67e5\u770b\u7f51\u7edc\u7aef\u53e3ID\nSELECT * FROM ports WHERE device_id=\"xxxxxxxxxxx\";\n#\u9a8c\u8bc1\u865a\u62df\u673aIP\u5730\u5740\u548cID\u5bf9\u5e94\u5173\u7cfb\nSELECT * FROM ipallocations WHERE port_id=\"xxxxxxxxxxx\";<\/code><\/pre>\n<\/li>\n<li>\u4fee\u6539\u6570\u636e\u5e93\u4e2d\u7684 <code>ip_address<\/code> \u5b57\u6bb5\uff1a\n<pre><code>UPDATE ipallocations SET ip_address=\"192.168.10.104\" WHERE port_id=\"xxxxxxxxxxx\";<\/code><\/pre>\n<\/li>\n<li>\u751f\u6548\uff1a\n<pre><code>FLUSH PRIVILEGES;<\/code><\/pre>\n<\/li>\n<li>\u5728\u5b9e\u4f8b\u4e2d\u4fee\u6539IP\uff1a<code>vim \/etc\/sysconfig\/network-scripts\/ifcfg-eth0<\/code>\n<pre><code>IPADDR=192.168.10.104<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>3. keepalived+haproxy VIP \u914d\u7f6e<\/h3>\n<p>\u4e24\u4e2a\u5b9e\u4f8b\u7684IP\u4e3a\uff1a192.168.10.105\u3001192.168.10.111\uff0cVIP\u4e3a\uff1a192.168.10.160<\/p>\n<ul>\n<li>\u5c06 VIP \u5173\u8054\u81f3\u5b89\u5168\u7ec4\uff1a\n<pre><code>neutron port-create --fixed-ip ip_address=192.168.10.160 --security-group <\u5b89\u5168\u7ec4ID\u6216\u540d\u79f0> <\u7f51\u7edcID\u6216\u540d\u79f0><\/code><\/pre>\n<\/li>\n<li>\u5217\u51fa\u5404\u5b9e\u4f8b\u7684portID\uff1a\n<pre><code>openstack port list | grep 192.168.10.105\nopenstack port list | grep 192.168.10.111<\/code><\/pre>\n<\/li>\n<li>\u5c06VIP\u5173\u8054\u5230\u5b9e\u4f8b\uff1a\n<pre><code>neutron port-update <105\u7684portID> --allowed_address_pairs list=true type=dict ip_address=192.168.10.160\nneutron port-update <111\u7684portID> --allowed_address_pairs list=true type=dict ip_address=192.168.10.160<\/code><\/pre>\n<\/li>\n<li>keepalived \u4f7f\u7528 VRRP \u534f\u8bae\uff0c\u9700\u8981\u5728 openstack \u5b89\u5168\u7ec4\u7b56\u7565\u5355\u72ec\u8fdb\u884c\u5f00\u653e\u3002<font color=red>\u5165\u53e3\u3001\u51fa\u53e3\u89c4\u5219\uff0c\u653e\u5f00 <code>IP\u534f\u8bae 112<\/code> \u5373\u53ef\u3002<\/font><\/li>\n<li>\u914d\u7f6e\u5185\u6838\u53c2\u6570 <code>vim \/etc\/sysctl.conf<\/code>\n<pre><code>net.ipv4.ip_nonlocal_bind = 1\nnet.ipv4.ip_forward = 1<\/code><\/pre>\n<p>\u542f\u7528\uff1a<code>sysctl -p<\/code><\/p>\n<\/li>\n<\/ul>\n<h4>keepalived MASTER \u914d\u7f6e<\/h4>\n<pre><code>vrrp_instance VI_1 {\n    state MASTER\n    interface eth0\n    virtual_route_id 1\n    priority 100\n    advert_int 1\n    unicast_src_ip 192.168.10.105\n    unicast_peer {\n        192.168.0.111\n    }\n\n    authentication {\n        auth_type PASS\n        auth_pass 3344512\n    }\n\n    virtual_ipaddress {\n        192.168.10.160\/24 dev eth0 label eth0:0\n    }\n}<\/code><\/pre>\n<h4>keepalived BACKUP \u914d\u7f6e<\/h4>\n<pre><code>vrrp_instance VI_1 {\n    state BACKUP\n    interface eth0\n    virtual_route_id 1\n    priority 50\n    advert_int 1\n    unicast_src_ip 192.168.10.111\n    unicast_peer {\n        192.168.0.105\n    }\n\n    authentication {\n        auth_type PASS\n        auth_pass 3344512\n    }\n\n    virtual_ipaddress {\n        192.168.10.160\/24 dev eth0 label eth0:0\n    }\n}<\/code><\/pre>\n<h3>haproxy \u914d\u7f6e<\/h3>\n<pre><code>global\nmaxconn 100000\nuid 99\ngid 99\ndaemon\nnbproc 1\nlog 127.0.0.1 local0 info\n\ndefaults\noption redispatch\noption abortonclose\noption http-keep-alive\notion forwardfor\nmaxconn 100000\nmode http\n\n#=============\nfronted web\n    bind 192.168.10.160:80\n    mode http\n    default_backend  web_http_nodes\n\nbackend web_http_nodes\n    mode http\n    balance roundrobin\n    server web1 192.168.10.105:80 check inter 2000 fall 3 rise 5\n    server web2 192.168.10.111:80 check inter 2000 fall 3 rise 5<\/code><\/pre>\n<h2>Openstack \u76f8\u5173\u4f18\u5316<\/h2>\n<h3>1. \u914d\u7f6e\u865a\u62df\u673a\u81ea\u542f\u52a8<\/h3>\n<p>\u63a7\u5236\u7aef\u548c\u8ba1\u7b97\u8282\u70b9\u7684 <code>\/etc\/nova\/nova.conf<\/code> \u8fdb\u884c\u5982\u4e0b\u914d\u7f6e\uff1a<\/p>\n<pre><code>resume_guests_state_on_host_boot=true<\/code><\/pre>\n<h3>2. \u914d\u7f6eCPU\u8d85\u9650\u4f7f\u7528<\/h3>\n<p>\u9ed8\u8ba4\u4e3a16\uff0c\u5373\u5141\u8bb8\u5f00\u542f16\u500d\u4e8e\u7269\u7406CPU\u7684\u865a\u62dfCPU\u4e2a\u6570\u3002<\/p>\n<pre><code>cpu_allocation_ratio=16<\/code><\/pre>\n<h3>3. \u914d\u7f6e\u5185\u5b58\u8d85\u9650\u4f7f\u7528<\/h3>\n<pre><code>ram_allocation_ratio=1.5        #\u5141\u8bb81.5\u500d\u4e8e\u7269\u7406\u5185\u5b58\u7684\u865a\u62df\u5185\u5b58<\/code><\/pre>\n<h3>4. \u914d\u7f6e\u78c1\u76d8\u8d85\u9650\u4f7f\u7528<\/h3>\n<p><font color=red>\u78c1\u76d8\u6700\u597d\u4e0d\u8981\u8d85\u9650\uff0c\u5426\u5219\u53ef\u80fd\u5bfc\u81f4\u6570\u636e\u4e22\u5931\uff01<\/font><\/p>\n<pre><code>disk_allocation_ratio=1.0        <\/code><\/pre>\n<h3>5. \u914d\u7f6e\u9884\u7559\u78c1\u76d8\u7a7a\u95f4<\/h3>\n<pre><code>reserved_host_disk_mb=20480<\/code><\/pre>\n<h3>6. \u914d\u7f6e\u9884\u7559\u5185\u5b58<\/h3>\n<pre><code>reserved_host_memory_mb=4096<\/code><\/pre>\n<h3>7. \u914d\u7f6e\u865a\u62df\u673a\u7c7b\u578b\u52a8\u6001\u8c03\u6574<\/h3>\n<p>\u5728\u6709\u4e9b\u65f6\u5019\uff0c\u521b\u5efa\u5b8c\u7684\u865a\u62df\u673a\uff0c\u56e0\u4e3a\u4e1a\u52a1\u9700\u8981\u53d8\u66f4\u5185\u5b58\u3001cpu\u3001\u78c1\u76d8\uff0c\u56e0\u6b64\u9700\u8981\u914d\u7f6e\u5141\u8bb8\u540e\u671f\u7c7b\u578b\u8c03\u6574\u3002<\/p>\n<ol>\n<li>\n<p>\u4fee\u6539<code>nova.conf<\/code>\u914d\u7f6e\uff1a<\/p>\n<pre><code>allow_resize_to_same_host=true\nbaremetal_enabled_filters=RetryFilter,AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ExactRamFilter,ExactDiskFilter,ExactCoreFilter<\/code><\/pre>\n<\/li>\n<li>\n<p>\u5728\u5404\u7ed3\u7b97\u8282\u70b9\u6dfb\u52a0nova\u7528\u6237\uff0c\u5e76\u914d\u7f6eSSH\u514d\u79d8\u94a5\u8ba4\u8bc1\uff0c\u786e\u4fdd\u5404\u4e2a\u8ba1\u7b97\u8282\u70b9\u53ef\u4ee5\u4e92\u76f8\u767b\u5f55\u3002<\/p>\n<\/li>\n<li>\n<p>\u5728web\u4e2d\u8c03\u6574\u5b9e\u4f8b\u5927\u5c0f\u3002<font color=red>\u78c1\u76d8\u53ea\u80fd\u589e\u5927\uff0cCPU\u548cMEMORY\u53ef\u4ee5\u589e\u52a0\u6216\u51cf\u5c0f\u3002<\/font><\/p>\n<\/li>\n<\/ol>\n<h2>Openstack \u5feb\u901f\u90e8\u7f72\u5de5\u5177<\/h2>\n<ol>\n<li>fuel<\/li>\n<li>devstack<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>[TOC] \u5404\u7ec4\u4ef6\u529f\u80fd OpenStack \u901a\u8fc7&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"_links":{"self":[{"href":"https:\/\/www.carnica.cn\/index.php?rest_route=\/wp\/v2\/posts\/157"}],"collection":[{"href":"https:\/\/www.carnica.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.carnica.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.carnica.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.carnica.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=157"}],"version-history":[{"count":7,"href":"https:\/\/www.carnica.cn\/index.php?rest_route=\/wp\/v2\/posts\/157\/revisions"}],"predecessor-version":[{"id":179,"href":"https:\/\/www.carnica.cn\/index.php?rest_route=\/wp\/v2\/posts\/157\/revisions\/179"}],"wp:attachment":[{"href":"https:\/\/www.carnica.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.carnica.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.carnica.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}