• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            sunrise

            每天不斷學習,才能不斷提升自己。

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              64 隨筆 :: 0 文章 :: 92 評論 :: 0 Trackbacks

            作者:張華  發表于:2012-3-30
            版權聲明:可以任意轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本版權聲明

            ( http://blog.csdn.net/quqi99 )

                     

            1網絡橋接配置

            首先,fedora16對網卡使用了新的命名方式,第一塊網卡不叫eth0,我的T420上叫em1。它為什么做,有興趣可參考文獻:

            Fedora15的新的網卡命名方式http://www.20ju.com/content/V168885.htm

            總之,我不喜歡這種叫法,現在將網卡名稱從em1改回eth0,具體做法請參考文獻,(修改fedora16的網絡接口名,使其變回eth0http://www.bitbi.biz/fedora-2/%E4%BF%AE%E6%94%B9fedora-16-%E7%9A%84%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3%E5%90%8D%EF%BC%8C%E4%BD%BF%E5%85%B6%E5%8F%98%E5%9B%9E-eth0-2685

            最后配置橋接(參考文獻:http://blog.bodhizazen.net/linux/fedora-15-virt-manager-bridged-networking/):


            sudoyuminstallbridge-utils

            sudovi/etc/sysconfig/network-scripts/ifcfg-eth0

            DEVICE=eth0

            TYPE=Ethernet

            #changethehardwareaddresstomatchthehardwareaddressyourNICuses

            HWADDR=00:21:CC:60:D6:1A

            ONBOOT=yes

            #BOOTPROTO=dhcp

            #MODE=Managed

            BRIDGE=br100

            NM_CONTROLLED=no


            sudovi/etc/sysconfig/network-scripts/ifcfg-br100

            DEVICE=br100


            TYPE=Bridge

            BOOTPROTO=dhcp

            #BOOTPROTO=static

            #IPADDR=192.168.99.100

            #NETWORK=192.168.99.0

            #NETMASK=255.255.255.0

            #GATEWAY=192.168.99.1

            #DNS1=202.106.195.30

            ONBOOT=yes

            NM_CONTROLLED=no


            最后重啟網絡服務,sudoservicenetworkrestart需要注意的是,fedora默認使用NetworkManager來管理網卡,而briage不支持NetworkManager,所以需要關閉NetworkManager服務(sudoserviceNetworkManagerstop&sudoserviceNetworkManager disable)。不然會報下列錯(tail-f/var/log/message)

            http://forums.fedoraforum.org/showthread.php?t=262356

            Bringingupinterfaceeth0:Error:Connectionactivationfailed:DevicenotmanagedbyNetworkManagerorunavailable
            [FAILED]
            RTNETLINK
            answers:Fileexists

            不過,我沒有使用上述方法,因為你關閉NetworkManager服務的話,你的無線網卡也不能用NetworkManager管理了,所以我在上述的配置中加了NM_CONTROLLED=no實現了同樣的目的。

            我機器的其他條件是:

            1)你得確保安裝了libvirtd(yuminstalllibvirtd&servicelibvirtdstart),可用virsh-cqemu:///systemlist命令測試

            2)安裝gcc,這個在安裝pythonmodules時會用到

            3mysqlroot用戶應該有密碼,可用echo"showdatabases"|mysql-uroot-ppassword

            4)在命令行中先切換到root用戶,然后再啟動eclipse

            2通過git下載源碼

            1) 安裝javaeclipse,略

            2)為eclipse安裝pydev插件(help->installnewsoftwae...,http://pydev.org/updates),然后再"window->preferences":菜單中的Pydev->InterpreterPython選項卡中點擊AutoConfig按鈕配置python

            3) eclipse安裝egit插件(http://download.eclipse.org/egit/updates)

            4)eclipse安裝django插件:

            installdjangopluginforpython,firstdownloadhttp://www.djangoproject.com/download/1.3.1/tarball/

            sudopythonsetup.pyinstallexportPATH=/usr/lib/python2.7/site-packages/django/bin:$PATH

            django-admin.pyversion

            django-admin.pystartprojectmyFirstDjango

            cdmyFirstDjango

            sudochmod777*

            ./manage.pyrunserver

            http://127.0.0.1:8000/

            5)eclipse中通過git插件clone下列組件的master分支(cloneagitrepository),注意,有的組件會下載失敗,只需要將https協議換成git協議即可。我的代碼下載在/bak/openstack目錄下。

            #computeservice

            NOVA_REPO=https://github.com/openstack/nova.git

            #storageservice

            SWIFT_REPO=https://github.com/openstack/swift.git

            #imagecatalogservice

            GLANCE_REPO=https://github.com/openstack/glance.git

            #unifiedauthsystem(managesaccounts/tokens)

            KEYSTONE_REPO=https://github.com/openstack/keystone.git

            #awebsockets/html5orflashpoweredVNCconsoleforvminstances

            NOVNC_REPO=https://github.com/cloudbuilders/noVNC.git

            #djangopoweredwebcontrolpanelforopenstack

            HORIZON_REPO=https://github.com/openstack/horizon.git

            #pythonclientlibrarytonovathathorizon(andothers)use

            NOVACLIENT_REPO=https://github.com/openstack/python-novaclient.git

            #pythonkeystoneclientlibrarytonovathathorizonuses

            KEYSTONECLIENT_REPO=https://github.com/openstack/python-keystoneclient

            #quantumservice

            QUANTUM_REPO=https://github.com/openstack/quantum

            #quantumclient

            QUANTUM=https://github.com/openstack/python-quantumclient

            #Tempesttestsuite

            https://github.com/openstack/tempest.git

            #melangeservice

            https://github.com/openstack/melange.git

            #pythonmelangeclientlibrary

            https://github.com/openstack/python-melangeclient.git

            #swiftclient

            https://github.com/chmouel/python-swiftclient.git

            3eclipse中導入工程

            1)"GitRepositories"視圖上上步clone下來的每一個工程的"WorkingDirector"目錄上右鍵點擊選"importprojects"導入工程,再選importasgeneralproject",直接見下圖吧。

            2)依次做完上步之后,然后可以進入java視圖,在每個工程上點右鍵選"Pydev->setasPydevproject",即使是horizon工程也不例外,設置的是pydevproject,而不是django工程

            3安裝一些依賴包

            1. install python-pip,nowpipisareplacementfor`easy_install`

            sudo yumsearchpython-pip

            sudo yuminstallpython-pip.noarch

            sudo yuminfopython-pip.noarch

            1. sudo yuminstallgcc;

            sudo yuminstallpython-devel

            sudo yuminstallpython-greenlet

            sudo yuminstallMySQL-python

            sudo yuminstalleuca2ools

            sudo yuminstalldnsmasq

            sudo yuminstallscsi-target-utils

            1. install MQ

            rabbitmqconfiguration

            sudoyuminstallrabbitmq-server

            sudoservicerabbitmq-serverstart

            sudochkconfigrabbitmq-serveron

            changetherabbitpasswordsincethedefaultis"guest"

            sudorabbitmqctlchange_passwordguestpassword

            sudorabbitmqctlstatus

            1. install mysql

            sudoyuminstallmysql-serverphp-mysql

            sudoservicemysqldstart

            sudochkconfigmysqldon

            mysql-uroot-ppasswordSETPASSWORDFOR'root'@'localhost'=PASSWORD('password');

            sudomysql-uroot-ppassword-h127.0.0.1-e"GRANTALLPRIVILEGESON*.*TO'root'@'%'identifiedby'password';"

            sudocp/usr/share/mysql/my-small.cnf/etc/my.cnf

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

            1. install libvirt

            sudo yuminstalllibvirt

            sudo servicelibvirtdrestart

            6) sudoyuminstallpython-sqlite2python-lxmlpython-greenlet-develpython-ldap

            安裝依賴的Pythonmodules

            依次檢查,如果有的工程下的目錄有tools/pip-requires,則可以運行下列命令安裝依賴的pythonmodules,例:

            cd/bak/openstack/python-novaclient/

            pip-python install-rtools/pip-requires

            pip-python install-rtools/test-requires

            并對除了你要在eclipse中運行的工程(keystone,glance,nova,horion)除外的其他工程(novaclient,keystoneclient)依次運行命令:

            python setup.py develop

            注意,如果在對nova運行時報ImportError:cannotimportnamenormalizenormalize/usr/lib64/python2.7/local.py里的一個方法,原因是nova工程的目錄下有一個locale的目錄將local的名稱空間給蓋了(http://groups.google.com/group/django-users/browse_thread/thread/e8bb9089d9e5be60)

            5最小化配置openstack

            只需要啟動keystone,glance-reg,glance-api,nova-all,dashboard四個組件就可以啟動openstack了,其他的服務不是必須的。其中,由于dashboard是一個django工程,我們不需要安裝apache,用django自帶的http服務器(pythonmanage.pyrunserver)即可啟動它。

            5.1配置keystone

            1)配置:

            vi/bak/openstack/keystone/etc/keystone.conf

            connection=mysql://root:password@localhost/keystone

            driver=keystone.token.backends.sql.Token

            driver=keystone.contrib.ec2.backends.sql.Ec2

            2)創建數據庫:

            mysql-uroot-ppassword-e'dropdatabasekeystone'

            mysql-uroot-ppassword-e'createdatabasekeystone'

            mysql-uroot-ppassword-e"grantallon*.*toroot@'%'identifiedby'password'"

            cd/bak/openstack/keystone&&./bin/keystone-managedb_sync

            3)啟動

            若是在命令行中如下方法啟動

            ./bin/keystone-all--config-file /bak/openstack/keystone/etc/keystone.conf --log-config/bak/openstack/keystone/etc/logging.conf -d –debug

            若是在eclipse中,如下圖,一定要將Argumentsworkingdirctory中的${workspace_loc:keystone/bin}改為{workspace_loc:keystone},如果你不想這樣改的話,那就你就得在Programarguments那段填參數--config-file/bak/openstack/keystone/etc/keystone.conf --log-config/bak/openstack/keystone/etc/logging.conf -d –debug












              1. 初始化數據

            SERVICE_TOKEN=ADMIN
            ADMIN_PASSWORD=password
            SERVICE_ENDPOINT=http://localhost:35357/v2.0
            export
            SERVICE_TOKEN=$SERVICE_TOKEN
            export
            SERVICE_ENDPOINT=$SERVICE_ENDPOINT
            function
            get_id(){
            echo`$@|grepid|awk'{print$4}'`
            }
            ADMIN_TENANT=`get_id
            keystonetenant-create--name=admin`
            ADMIN_USER=`get_id
            keystoneuser-create--name=admin--pass="$ADMIN_PASSWORD"--email=admin@example.com`
            ADMIN_ROLE=`get_id
            keystonerole-create--name=admin`
            KEYSTONEADMIN_ROLE=`get_id
            keystonerole-create--name=KeystoneAdmin`
            KEYSTONESERVICE_ROLE=`get_id
            keystonerole-create--name=KeystoneServiceAdmin`
            keystone
            user-role-add--user$ADMIN_USER--role$ADMIN_ROLE--tenant_id$ADMIN_TENANT
            keystone
            user-role-add--user$ADMIN_USER--role$KEYSTONEADMIN_ROLE--tenant_id$ADMIN_TENANT
            keystone
            user-role-add--user$ADMIN_USER--role$KEYSTONESERVICE_ROLE--tenant_id$ADMIN_TENANT

            echo$?

            5)驗證

            keystoneservice-list

            keystoneuser-list

            keystonerole-list

            1. 架構http://keystone.openstack.org/architecture.html

            Service,使用keystone的內部服務

            Identity,基于角色的驗證與授權

            Token,user/tenantcredentials已經驗證之后生成的隨機數

            Catalog,注冊的后端,sql,kvs,ldap

            Policy,提供rule-basedauthorizationengine

            nosetests-s-vtest_backend_sql.py


            keystoneservice-create--nameCOMPUTE_ID--typecompute--description'OpenStackComputeservice'




            keystoneendpoint-create--region=RegionOne--service_id=COMPUTE_ID--publicurl='http://localhost:$(compute_port)s/v1.1/$(tenant_id)s'--internalurl='http://localhost:$(compute_port)s/v1.1/$(tenant_id)s'adminurl='http://localhost:$(compute_port)s/v1.1/$(tenant_id)s'


            keystoneendpoint-create--region=RegionOne--service_id=IDENTITY_ID--publicurl='http://localhost:$(public_port)s/v2.0'--internalurl='http://localhost:$(public_port)s/v2.0'--adminurl='http://localhost:$(admin_port)s/v2.0'




            keystoneendpoint-create--region=RegionOne--service_id=IMAGE_ID--publicurl='http://localhost:9292/v1'--internalurl='http://localhost:9292/v1'--adminurl='http://localhost:9292/v1'

            執行上述語句要keystone.conf文件中有:

            driver= keystone.catalog.backends.sql.Catalog


            5.2配置glance

            1)配置

            vi/bak/openstack/glance/etc/glance-registry.conf

            sql_connection=mysql://root:password@localhost/glance


            vi/bak/openstack/glance/etc/glance-api-paste.conf

            vi/bak/openstack/glance/etc/glance-registry-paste.conf

            #admin_tenant_name=%SERVICE_TENANT_NAME%

            #admin_user=%SERVICE_USER%

            #admin_password=%SERVICE_PASSWORD%

            admin_token=ADMIN


            vi/bak/openstack/glance/etc/glance-api.conf

            vi/bak/openstack/glance/etc/glance-registry.conf

            [paste_deploy]

            flavor=keystone

            debug=True

            #log_file=/var/log/glance/api.log


            2)數據庫:

            mysql-uroot-ppassword-e'DROPDATABASEIFEXISTSglance;'

            mysql-uroot-ppassword-e'CREATEDATABASEglance;'

            mysql-uroot-ppassword-e"grantallon*.*toroot@'%'identifiedby'password'"

            cd/bak/openstack/glance&&./bin/glance-managedb_sync

            3)啟動

            ./bin/glance-registry--config-file=/bak/openstack/glance/etc/glance-registry.conf

            filesystem_store_datadir=/var/lib/glance/images

            ./bin/glance-apiconfig-file=/bak/openstack/glance/etc/glance-api.conf

            如果是在eclipse中啟動,注意和上面keystone的一樣,將基準路徑從${workspace_loc:glance/bin}改為${workspace_loc:glance},這樣改了之后,就直接從${workspace_loc:glance/}/etc/glance目錄讀配置文件,而不是從/etc/glance


            4) 上傳鏡像

            cd /bak/openstack/glance

            export FILES=/bak/openstack/glance

            mkdir -p $FILES/images


            exportOS_AUTH_USER=admin
            export OS_AUTH_KEY=password
            exportOS_AUTH_TENANT=admin
            exportOS_AUTH_URL=http://localhost:35357/v2.0
            exportOS_AUTH_STRATEGY=keystone
            sudo wget -chttp://images.ansolabs.com/tty.tgz -O $FILES/images/tty.tgz
            tar-zxf $FILES/images/tty.tgz -C $FILES/images
            TOKEN=`curl -s -d"{\"auth\":{\"passwordCredentials\":{\"username\": \"$OS_AUTH_USER\", \"password\":\"$OS_AUTH_KEY\"}, \"tenantName\":\"$OS_AUTH_TENANT\"}}" -H "Content-type:application/json" http://localhost:5000/v2.0/tokens | python -c"import sys; import json; tok = json.loads(sys.stdin.read());print tok['access']['token']['id'];"`

            RVAL=`./bin/glanceadd -A $TOKEN name="cirros-kernel" is_public=truecontainer_format=aki disk_format=aki <$FILES/images/aki-tty/image`
            KERNEL_ID=`echo $RVAL | cut -d":"-f2 | tr -d " "`


            RVAL=`./bin/glance add-A $TOKEN name="cirros-ramdisk" is_public=truecontainer_format=ari disk_format=ari<$FILES/images/ari-tty/image`
            RAMDISK_ID=`echo $RVAL | cut-d":" -f2 | tr -d " "`


            ./bin/glance add -A$TOKEN name="cirros" is_public=true container_format=amidisk_format=ami kernel_id=$KERNEL_ID ramdisk_id=$RAMDISK_ID<$FILES/images/ami-tty/image

            5) 驗證
            ./bin/glance-f index

            5.4nova配置

            sudoyuminstallscsi-target-utils

            sudoservicetgtdrestart(如果啟動不了,可換用于fedora17tgtdrpm包)

            sudosystemctlstatustgtd.service

            sudovgsnova-volumes

            sudolosetup-f--show/bak/kvmimages/nova.img

            sudovgcreatenova-volumes/dev/loop0

            sudoservicetgtdrestart

            sudosystemctlstatustgtd.service

            sudosystemctlstatusnetwork.service

            實例路徑:/bak/openstack/nova/instances

            查看實例:virshlist--all

            查看iscsisession:iscsiadm--modenode

            刪除iscsisession:sudoiscsiadm--modenode--logout&&sudoiscsiadm--modenode--opdelete


            1)配置文件

            vi/etc/nova/nova.conf

            --verbose

            --logdir=/var/log/nova
            --state_path=/var/lib/nova
            --lock_path=/var/lib/nova/tmp
            --instances_path=/var/lib/nova/instances
            --debug=True

            --scheduler_driver=nova.scheduler.simple.SimpleScheduler

            --dhcpbridge_flagfile=/etc/nova/nova.conf

            --fixed_range=10.0.0.0/24

            --s3_host=127.0.0.1

            --network_manager=nova.network.manager.FlatDHCPManager

            --volume_group=nova-volumes

            --volume_name_template=volume-%08x

            --iscsi_helper=tgtadm

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

            --my_ip=localhost

            --public_interface=br100

            --vlan_interface=eth0

            --sql_connection=mysql://root:password@localhost/nova

            --libvirt_type=kvm

            --instance_name_template=instance-%08x

            --novncproxy_base_url=http://127.0.0.1:6080/vnc_auto.html

            --xvpvncproxy_base_url=http://127.0.0.1:6081/console

            --vncserver_listen=127.0.0.1

            --vncserver_proxyclient_address=127.0.0.1

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

            --image_service=nova.image.glance.GlanceImageService

            --ec2_dmz_host=127.0.0.1

            --rabbit_host=localhost

            --rabbit_password=password

            --glance_api_servers=127.0.0.1:9292

            --force_dhcp_release

            --connection_type=libvirt

            --firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver


            --flat_network_bridge=br100

            --flat_interface=eth0

            --auth_strategy=keystone


            cp/bak/openstack/nova/etc/nova/api-paste.ini/etc/nova/

            vi/bak/openstack/nova/etc/nova/api-paste.ini

            #admin_tenant_name=%SERVICE_TENANT_NAME%

            #admin_user=%SERVICE_USER%

            #admin_password=%SERVICE_PASSWORD%

            admin_token=ADMIN



            2)數據庫

            mysql-uroot-ppassword-e'DROPDATABASEIFEXISTSnova;'

            mysql-uroot-ppassword-e'CREATEDATABASEnova;'

            cd/bak/openstack/nova&&sudo./bin/nova-managedbsync

            3)fixthepydevproblemwith"eventlet.monkey_patch()"

            cd/bak/openstack/nova/bin

            perl-pi-e's/eventlet\.monkey_patch\(\)/eventlet\.monkey_patch\(all=False,socket=True,select=True\)/g'*

            4千萬不要將glance安裝到系統中,但要在eclipse中設置glancekeystonenove的工程依賴,如果已安裝,可按下列方法清除。

            pip-pythonuninstallglance

            rm-rf/usr/bin/glance*

            rm-rf/usr/lib/python2.7/site-packages/glance.egg-link

            5)啟動

            vi/bak/openstack/nova/bin/nova-all

            #forbinaryin['nova-compute','nova-network','nova-scheduler','nova-cert']:

            forbinaryin['nova-compute','nova-network','nova-scheduler']:


            啟動:/bak/openstack/nova/bin/nova-all

            5)驗證

            #forkeystoneclient

            exportSERVICE_ENDPOINT=http://localhost:35357/v2.0
            export
            SERVICE_TOKEN=ADMIN

            #for
            novaclient
            export
            NOVA_AUTH_STRATEGY=keystone
            export
            NOVA_USERNAME=admin
            export
            NOVA_PASSWORD=password
            export
            NOVA_PROJECT_ID=admin
            export
            NOVA_URL=http://localhost:35357/v2.0
            export
            NOVA_VERSION=1.1

            #for glanceclient

            export OS_AUTH_USER=admin
            exportOS_AUTH_KEY=password
            export OS_AUTH_TENANT=admin
            exportOS_AUTH_URL=http://localhost:35357/v2.0
            exportOS_AUTH_STRATEGY=keystone



            nova list

            nova flavor-list

            nova image-list

            nova –debugboot--flavorm1.tiny--image5213ac41-a588-419f-9b50-c86217433df9quqitestserver

            nova-manageservicelist

            若網絡服務啟動失敗,可能要:rm-rf/var/lib/nova/tmp/nova-iptables.lock

            如果上述命令不能執行,有可能是因為它無法找到policy.json文件,需要將eclipse的基準主路設為${workspace_loc:nova/etc/nova}

            5.3配置dashboard

            mv /bak/openstack/horizon/openstack_dashboard/local /bak/openstack/horizon/openstack_dashboard/local/local_settings.py

            vi/bak/openstack/horizon/openstack_dashboard/local/local_settings.py

            DATABASES= {

            'default':{

            'ENGINE':'django.db.backends.mysql',

            'NAME':'dash',

            'USER':'root',

            'PASSWORD':'password',

            'HOST':'localhost',

            'default-character-set':'utf8',

            },

            }


            vi/bak/openstack/horizon/manage.py

            #!/usr/bin/envpython

            fromdjango.core.management import execute_manager

            importos, sys

            ROOT_PATH= os.path.dirname(os.path.abspath(__file__))

            ifROOT_PATH not in sys.path:

            sys.path.insert(0,ROOT_PATH)

            importopenstack_dashboard.settings

            if__name__ == "__main__":

            execute_manager(openstack_dashboard.settings)



            1)創建dashboard數據庫

            sudomysql-uroot-ppassword-e'createdatabasedash';

            sudomysql-uroot-ppassword-e"grantallon*.*toroot@'%'identifiedby'password'"

            setPYTHONPATH=/bak/openstack/glance:/bak/openstack/keystone

            cd/bak/openstack/horizon/

            pythonmanage.pysyncdb


            1. 配置它工程依賴glance,keystone

            2. 將它自身的頂級目錄openstack_dashboard加入到PYTHONPATH

            3. 啟動,cd/bak/openstack/horizon

            pythonmanage.py runserver ,用它啟動horion時,就可以不需要啟動apache


            2012-04.05添加:

            上述配置是可以正常啟動實例的,但是實例沒有IP,那是因為忘了建立虛擬網絡,命令如下:

            nova-manage network createpublic10.10.10.0/24 1 256

            其他測試用到的命令如下:刪除虛擬網絡:nova-managenetworkdelete 10.10.10.0/24

            啟動實例:nova boot --image 5213ac41-a588-419f-9b50-c86217433df9--flavor1 --nic net-id=99b1d65e-34ae-4658-8387-ce9724 myserver8

            刪除實例:novadelete myserver8

            給實例加硬盤:nova volume-create--display_namevolhua11(1代表1G)

            刪除硬盤:novavolume-attach myserver8 2 /dev/vdb


            另外,測試了一下分布式部署,基本上和上面是一樣的,注意以下幾點就行了:

            1)之前單機部署時控制節點的/etc/nova/nova.conf中使用的localhost可以不用動。因為本來mysql, activemq, glance都是安裝在控制節點上。

            2)但是控制節點 glance/etc/default_catalog.tempates中的IP需要從localhost變為實際IP

            3)在計算節點上的/etc/nova/nova.conf中的IP相應改對,如mysql, activemq, glance的IP

            4)計算節點僅僅只需要啟動一個nova-compute即可工作。但是nova-compute運行時需要通過nova-client, keystone-client, glance-client去調用相應的服務。但是glance為client弄一個工程,所以在計算節點也得像上文中的方法安裝nova-client, keystone-client, glance三個依賴工程


            另外,如果在eclipse中無法調試nova工程的話,那是因為nova中使用了一個叫做eventlet的python協程庫(大家知道的nginx是java里的一個非阻塞I/O庫),所謂協程,是一個比線程更小的單位,協程運行在用戶空間,所以操作系統無法感知它,所以它需要程序員自己去調度協程,這樣用于執行協作式多任務效率比只用線程的更高。eventlet中有一個叫monkey patch的東東,它用來在運行時對己有的代碼進行修改,達到hot patch的目的。eventlet使用該技巧用來替換一些python的標準的庫,比如說socket。就是因為這個東東把一些標準庫給替換成它自己的庫然后與pydev插件沖突,所以造成無法在eclipse中調試程序。比如說現在想調試bin/nova-network,那樣可以修改bin/nova-network腳本,將evenlet.monkye_patch()替換成:

            eventlet.monkey_patch(all=False,socket=True,select=True)

            posted on 2012-10-26 10:20 SunRise_at 閱讀(2030) 評論(1)  編輯 收藏 引用 所屬分類: linux開發

            評論

            # re: (轉)Fedora 16上源碼建立pydev + eclipse的OpenStack開發環境筆記草稿 ( by quqi99 ) 2012-11-12 12:52 C小加
            這不是云計算嘛?  回復  更多評論
              

            久久久黄色大片| 久久亚洲精品无码观看不卡| 亚洲欧美精品伊人久久| 久久久久久久波多野结衣高潮 | 久久久婷婷五月亚洲97号色| yellow中文字幕久久网| 亚洲va久久久噜噜噜久久男同| 亚洲欧美成人久久综合中文网| 国产精品久久午夜夜伦鲁鲁| 国产AV影片久久久久久| 久久综合给合久久狠狠狠97色| 久久99精品久久久久久9蜜桃| 久久五月精品中文字幕| 久久人人爽人人爽人人片AV东京热| 亚洲国产精品综合久久一线| 精品综合久久久久久97| 97精品国产91久久久久久| 久久久久久久人妻无码中文字幕爆 | 国产A级毛片久久久精品毛片| 精品无码人妻久久久久久| 欧美精品一区二区精品久久| 久久大香萑太香蕉av| 欧美亚洲国产精品久久久久| 精品久久综合1区2区3区激情| 午夜精品久久久久久久无码| 亚洲AV乱码久久精品蜜桃| 亚洲精品国产成人99久久| 久久久久av无码免费网| 国产99久久九九精品无码| 伊人久久精品无码二区麻豆| 久久久久国产| 久久国产免费观看精品| 久久AⅤ人妻少妇嫩草影院| 精品久久久久久无码专区不卡| 丁香五月综合久久激情| 一本一本久久aa综合精品| 久久婷婷人人澡人人爽人人爱| 久久99精品国产自在现线小黄鸭| 精品免费久久久久国产一区| 国产精品欧美久久久久无广告 | 香蕉久久夜色精品国产2020|