Openstack 集成 Ceph 基础篇(一)
详细配置也可以参考Ceph官方文档:http://docs.ceph.org.cn/rbd/rbd-openstack/环境介绍:
Openstack controller+compute
Openstack-compute compute
ceph001 OSD+Mon+MDS
ceph002 OSD+MDS
以上环境已提前准备完成,下面正式开始。
Ceph 中的配置
(1) 在 ceph 中创建三个 pool 分别给 Cinder,Glance 和 nova 使用
cephadmin@ceph001:~$ ceph osd pool create volumes 64
pool 'volumes' created
cephadmin@ceph001:~$ ceph osd pool create images 64
pool 'images' created
cephadmin@ceph001:~$ ceph osd pool create vms 64
pool 'vms' created
(2) 将Ceph配置文件Copy到Openstack各节点中
The nodes running glance-api, cinder-volume, nova-compute and cinder-backup act as Ceph clients. Each requires the ceph.conffile:
root@ceph001:~# ssh openstack tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf
root@openstack's password:
fsid = 4f1100a0-bc37-4472-b0b0-58b44eabac97
mon_initial_members = ceph001
mon_host = 192.168.20.178
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
osd_pool_default_size = 2
root@ceph001:~# ssh openstack-compute tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf
The authenticity of host 'openstack-compute (192.168.20.182)' can't be established.
ECDSA key fingerprint is b7:bf:c5:81:0d:a0:2a:2d:94:2f:c1:16:78:f3:9f:b2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'openstack-compute,192.168.20.182' (ECDSA) to the list of known hosts.
root@openstack-compute's password:
fsid = 4f1100a0-bc37-4472-b0b0-58b44eabac97
mon_initial_members = ceph001
mon_host = 192.168.20.178
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
osd_pool_default_size = 2
(3) 在各节点上安装ceph 客户端
http://docs.ceph.com/docs/master/rbd/rbd-openstack/
On the glance-api node, you’ll need the Python bindings for librbd:
#apt-get install python-ceph //好像N版openstack已经自带了,并且官方介绍的是安装python-rbd 各种源都找不到这个包,手动下载也无法安装提示和python-ceph有冲突
On the nova-compute, cinder-backup and on the cinder-volume node, use both the Python bindings and the client command line tools:
#apt-get install ceph-common
(4) SETUP CEPH CLIENT AUTHENTICATION
If you have cephx authentication enabled, create a new user for Nova/Cinder and Glance. Execute the following:
#cinder 用户会被 cinder 和 nova 使用,需要访问三个pool: volumes,vms 为rwx权限,images为rx权限
#glance 用户只会被 Glance 使用,只需要访问 images 这个 pool
root@ceph001:~# ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images'
key = AQBJg5hYuD0gHBAAproupKDYIuq0QemTnPMYdA==
root@ceph001:~# ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
key = AQC4g5hYMEVgGxAAoaVq50KgWV/y6YPzeHteGA==
root@ceph001:~#
(5) 将 client.cinder 和 client.glance 的 keystring 文件拷贝到各节点并设置访问权限
ceph auth get-or-create client.glance | ssh openstack sudo tee /etc/ceph/ceph.client.glance.keyring
ssh openstacksudo chown glance:glance /etc/ceph/ceph.client.glance.keyring //我这里的openstack环境是devstack,所以应该将glance用户替换为stack
ceph auth get-or-create client.cinder | ssh openstacksudo tee /etc/ceph/ceph.client.cinder.keyring
ssh openstack sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring //我这里的openstack环境是devstack,所以应该将cinder用户替换为stack
ceph auth get-or-create client.cinder | ssh openstack-compute sudo tee /etc/ceph/ceph.client.cinder.keyring
Create a temporary copy of the secret key on the nodes running nova-compute:
ceph auth get-key client.cinder | ssh openstack tee client.cinder.key
ceph auth get-key client.cinder | ssh openstack-compute tee client.cinder.key
Then, on the compute nodes, add the secret key to libvirt and remove the temporary copy of the key:
root@openstack:~# uuidgen
2862d317-e8df-4a5c-af7a-387ab2bc7ef5
root@openstack:/etc/ceph# ls
ceph.client.cinder.keyringceph.client.glance.keyringceph.conf
root@openstack:/etc/ceph# cat > secret.xml <<EOF
> <secret ephemeral='no' private='no'>
><uuid>2862d317-e8df-4a5c-af7a-387ab2bc7ef5</uuid>
><usage type='ceph'>
> <name>client.cinder secret</name>
></usage>
> </secret>
>
> EOF
root@openstack:~#virsh secret-define --file secret.xml
Secret 2862d317-e8df-4a5c-af7a-387ab2bc7ef5 created
root@openstack:~# virsh secret-set-value --secret 2862d317-e8df-4a5c-af7a-387ab2bc7ef5 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
Secret value set
root@openstack:~#
//在所有nova-compute节点都需要执行以上操作
//openstack-compute uuid c0f5d1a4-b086-4c0c-984e-2f4e84f0f9c5
//Important: You don’t necessarily need the UUID on all the compute nodes. However from a platform consistency perspective, it’s better to keep the same UUID.
CONFIGURE OPENSTACK TO USE CEPH
(1) CONFIGURING GLANCE
Edit /etc/glance/glance-api.conf and add under the section:
stores = glance.store.rbd.Store
default_store = rbd
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_chunk_size = 8
If you want to enable copy-on-write cloning of images, also add under the section:
show_image_direct_url = True
(2) CONFIGURING CINDER
OpenStack requires a driver to interact with Ceph block devices. You must also specify the pool name for the block device. On your OpenStack node, edit /etc/cinder/cinder.conf by adding:
...
enabled_backends = ceph
...
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
glance_api_version = 2
rbd_user = stack
rbd_secret_uuid = 2862d317-e8df-4a5c-af7a-387ab2bc7ef5
(3) CONFIGURING NOVA
在每个计算节点上的 /etc/nova/nova.conf 文件中做如下修改:
images_type = rbd #只有在 boot disk 放在 ceph 中才需要配置这个,否则,设置为 qcow2
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = cinder
rbd_secret_uuid = e21a123a-31f8-425a-86db-7204c33a6161
disk_cachemodes="network=writeback"
hw_disk_discard = unmap
inject_password = false
inject_key = false
inject_partition = -2
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
重启服务
glance,cinder,nova
环境验证
http://www.cnblogs.com/vincenshen/articles/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA38AAACQCAIAAAA3L0USAAAgAElEQVR4nO2d27mkKhBGO40Th7GYk7EYi7F0CnMeercWUMXFC4K91jcP02ylqqDAX7y9/ivnBecxTPM0vF6v1zi/l8//WqhzmJb3PJ7iDdzIMC1hBqiFAAAA1UB93s0wLe/3+32a9jxc5zi/3+8TteenPp9btW2DLl0D6hMAABoE9QkAAAAA9UB9AgAAAEA9GlWfz7s4+ISICu8GPfFW1qs48/7W7+0O6g0P3EgLAADw5VL1uV9xtarVLohoEy1CnSiFa9GRhlkfSKpBB+rzAo5F3WriAwAAnEd36nPTZXesJZ0ekdAq23/VwqMOyEdt6rQc6rMc1CcAADyfU9SnUIRCNWnPE2/FvqZyt9sOwsO0bBsP0+JY+GwdrgoO07JM0xwztFW/bik2rRXROAsl+N1ELdR/ZvPXcn9rn+McrSS28up5Fjbduuk8z2qLuptuVUREm9IdBXW6evDbukpERuyJi+oegfpUDeUnGAAAwNM4QX06t7Q5l3YjUknuJI/X4zQN255SbQb3zv393Eq3eoZpeQeFzv+/e4ktt4pqRiSr+wgjtTDigAjBZjWfvvKuOK+EaDSd2x3aEq6sxDm1iPmudUd+nbIJg+Z0mk6N3TBkoK99hk1XnGAAAAAP4ST1ad7SaB5K14O0ekAfpmWZZ69eb9VqWZb3PHqiL5SPaqGjBgPNWDOiZRpWGff5qRZGHPDV53cNbZWD09poyzyn1GdMX9kSSo3daBARQt6zOGp3FNW5SU5XfMZEYdKQQa76LE8wAACAZ3CC+nyZVybDQ6m44PjepIn6QuyPvNQvTC/T8D2gy92l3FEL38G1TXXLWhGds/bp25k28WdeqrYlX8yALcR2tHxWNIHjzipkfp3fRvTEZ460jBnSrsbnqE81orIWAQAA6JZz1OdKfKEuY2HM23O7uTNUnx8pUbT2qWoLVX1WiajifZ/r7vNnwTdTYcb+ZgpNrUHOWunbW+enTX3xmbn2WeRjpvo0tkd9AgDA8zlBfYr71rxjrH/IFb+NmwK9uyRfjloLnhf5rl7uuO/z9Rrnv/s+NQlVKaJTnnn3r7yr/IU0TPPnon5k+4L7PpWWdbpDD+PT8kY0tu++B2V1jvN7nn3xGfRn6r5Pacj0Vmtdv+lyEwwAAOB5nLL26cpByfocr/+EuPVAtHL5dJy/5cbLbMJLoEP6mXdlQdR7uqRGRNqWVqH7TLT69E8MeQU5Q0C5G2rPY6duWrAapOguysjOhXU6jW4/YZ7ojhxp6N54qxvKTzAAAICncYr6rEam0OL6pUXVt80DAAAAhPSlPl8vuZa079GZnwb1CQAAADfTn/rMAfUJAAAA0CbPVJ8AAAAA0CaoTwAAAACoB+oTAAAAAOqB+gQAAACAeqA+AQAAAKAe56lPnjNvCroDdtBg2jTo0kF6iagXP6FTSLC7aKPlUZ8Phe6AHTSYNg26dJBeIurFT+gUEuwu2mh51OdDoTtgBw2mTYMuHaSXiHrxEzqFBLuLNlr+uPqU3w//4y+u8PvrFF5eSHdQ+Iy0adClH4moFz8p7LSQBGuq5V93wdrnQ6E7YAcNpk2DLh2kl4h68RM6hQS7izZaHvX5UOgO2EGDadOgSwfpJaJe/IROIcHuoo2WR30+FLoDdtBg2jTo0kF6iagXP6FTSLC7aKPlz1OfAAAAAAApUJ8AAAAAUA/UJwAAAADUA/UJAAAAAPVAfQIAAABAPc5Tnwefohqm5T2Pu3cHjzYeaoPOaDBtGnTpIL1EdJmf4/w+veIr6oRruUkzaGa317AXedRr1rUxBVVVn+Ms37GP1rySvO6QfeD9PM0MdERGfwafy7g4AfJSTHolNs/Pz4qZ3EtEeXOI3CRzDsk4Zhc7v1cHMIPdR6FmOKufImZLsyi+vSt4WlI8bWR9bfW5bdLrWUMnoD5hB4X9OUzL5aM4xyV3Mhmm5ZvJ3arPFiJCfcKlFCbYOJ+j4Gqqz+2vNebKbNrI+vvU5zZTrSf5W2YN07JM0+yf8mznEo4pZ+v3Mg2hpQaaui4H1Kf2wVixEPMt9U7sWjqzg70UzUrufBqmjTGKCy9zlWugtVDLT2UOUbeUZkX9ykAo5qaIXPcvafnPHCL7Xev2eZ6VWWSf81qdlqfZhqAOezTD55eiGYyxqfS7lZ+BOa/W4qwzz82UOlVto882BTOtxa+rT69n3Hs4hml5Cy0UTAvK1q5x75Tp9+aV3epza9qtDZ3mHqZ5z3VA6IGS/gzO7LW0UUaxp+VSYzP3ZgB1o8jOnm1/S1V92gOhhJsiuqLlLfX5DpLBzZAwtl3OJ+q0ooobgloUJ1h43Dd+KWNz+7uen4q518GsM9Y+48PQ9TOMqGCmtWkj62urT/NE084kaxlAO/JpG/yk+Czujm+feC2/ZbReWxtZDGeR35/2YcFJm2AUBwP9pGuwIptdv8ydgwjy1OfxfL8votNb3lSfeclw0PlknRk+M4Pdx8FbO0LNkFr9DqegcAkmuiZWlnXOEVYXnEoTxGebfYPLp42sv3XtM3pWk7js5a2Dm5NZ3qnA89i79mm0vHXJro0shrPI7U9/irO0mi7gii54lqaYM2eHOxtzSJ76fJkDoYT7Ijq95e0r71nJcNB5q4+MYLIMQT1OXft86WNT6fdI2ijq80DWqTetGsNQz88wopLBZdNG1t+nPlPnMfpxSxX4uulhWpZp/FHxeUR9WueFayFz92PJ689wgrPOyOMT5Ykuee5Zz+jYiwS56lNa2Zn6DUR0lp8H1z4POp+/5JNvCOpRnGAxLarulZN18bXPI1mnOr+vzrjzqM8zMymlPt2FU8P033nDT4rP3epTtLK8rWS9i8Yb8b+6tPxUcmalUXv0VE8bdU70LoGcc9+ncQXOz09zDgkz2bl3Z52CrIFQwl0RXdDywfWsv+Nr5n2fR53X6rRCyTYEtSjUDP7E42sGZWyq/a7np1Klv0Fp1oXnZu95VOs0/NRmm4KZ1uY31ady3ce//fCvM4zj1t82zrNmlmmRZT/HbvUpVvu9OVq/XLf1yW829LMoH8Xvt5k25pxoZ9M+lzyv/MOHPt0Ez6v6W65eyi2LXG8toktaXl4yFCsxpc+873Req1OlxBDUoXC2cU5zHLwZSHal0u9Wfjrbn5F1mrZdpkGtU81PfbgWzLQWP6g+a/PLp7UNdge0T4Np06BLB+klor1+9hIf3AyJchdttPyT1ecvi88GuwM6oMG0adClg/QSEeoTLoVEuYs2Wv489dkWn3Xsn9WeAAD3cOehLbwvhAMBQJM8VX0CAAAAQIugPgEAAACgHqhPAAAAAKgH6hMAAAAA6oH6BAAAAIB6nKc+23iGH/6gO2AHDaZNgy4dpJeIevETOoUEu4s2Wh71+VDoDthBg2nToEsH6SWiXvyETiHB7qKNlkd9PhS6A3bQYNo06NJBeomoFz+hU0iwu2ij5Y+rT/mZX/d7rNr3wim8uJDuoPAZadOgSz8SUS9+UthpIQnWVMu/7oK1z4dCd8AOGkybBl06SC8R9eIndAoJdhdttDzq86HQHbCDBtOmQZcO0ktEvfgJnUKC3UUbLY/6fCh0B+ygwbRp0KWD9BJRL35Cp5Bgd9FGy5+nPgEAAAAAUqA+AQAAAKAeqE8AAAAAqAfqEwAAAADqgfoEAAAAgHqcpz4PPkU1TMt7HrM3H+d35We29sUX9XN79ev5sbTxUNspPCiU5mmwra93SbOwc2xmzUsNNrJKL35Cp5Bgd9FGyzejPgt5hPos2KaYNtJLsN8hc89NIYjzFqVQ/QoEaDSXNnepzz9Kx+bvqU/x9RS5epA3DMfZ//JKbAUiVmd8T936xjh/y0OPws/EbJaE+bwe3QylCvXAje/WJNdtcqfKawojXnUxEJ5HGy2P+swF9XmM09WnaLbtv2rhUQd+iAYbCfV5Fxl+DtPyVRnDtGhjL38YJswpdRrWS0Ma52WevXLfbS2icd40Vlafaob0wrTXJbHnT5VXFJbFBTVoo+Wrq8/Y+atzTrlM0xycVX43nWeZ2+pVMqeKrMvf+gdSv15ZLqnWQz9l83gDUxmnhyLaNs6ZjL3apBH/qBGcemsNorSnv57w16JbsWFItvx2tr9NdF6+DEZhUYv8OHmCIzo23aUtscG3c4x+P+CSYz6Rn4p1M+ezx6Y+Lx2ISJ0uIn5eQumIWUffrmGYkCuxOsMNLJQdx/k9j0F5OEcH1r19xjnRWKoh3Xraa6XqvL9Gp8orCiMwJd9FGy1fWX3KMT1Ovubwrmh8foo/bP+V1ypEnbISqVRsHLPDNCsnbn9+6i6p1jU/S9TnoYi2wAqC3yyKMJ1GCF1SG8Roz7hDRnuKlv+b7N3jfXh0UAtLWuTnyTtkpMamTJu1B8IjpDvmD7iUn5+qdSPntd/Z4/1gRJb6tPy8hMIRM2pn2q/MYZjKhWidjvUogfW/JcSE+iydbURPRQ0Z1v3dxRm9ekU7Hnu+81cUxmBKvos2Wr6q+ozNMKH6DPRIstBxIvvQFg7cxMEqZd3aMlN9Howo3C+yifRTVdba0TsRpjERxhwy2lPsOc+LJgvWafrzUy0saBEoTxt1bCqSUzsWnXWdOj8/VeuW8+GO+wzti0hXn4afl1A0YsRl6B3DMDm3Ret0L4IXhLT+TKhP3bp35d1dTQ9ugw0NmdYV8RqJNBV7/lR5RaHtF1PyfbTR8rXVp7mJqbkSAs45LdSv13pWzCuGclFD3TXTer7z6s+yiCwOHOGOhPnS2tNwyKnVOAis2y1LsBxQePLdxoBrnFPT5u/H93K7c6DOv/ieqT5z8zORdTvGZmT3IxEVzSGXkD9i3JPO8mEYRBNM1LE6w1NebZ5XqtlqSahPy7qc66bI+YBqKGI9SiL2gPyp8orCAs8im+VOFpBHGwfDdtc+k6f+Eb2S6Y9HegUuejxQQ9mnPk+IqHwRK772mSnHJfE1j+QSWmDIPcf35+DvJnoS5bUInL8s9/nlHGkvXSks8jPlfNbYvDqi1tc+QwFUOAxjx4VknRnyyzXlnBl5OH+Lqd14uim+h4Zi1qO4Yyljp/yp8orCCEzJd9FGy1dVn+6YTtz3qSibbZtRv+/z9RpnscKS0b7i1kTrIOLefej/WbOu+rltOHo3hwWT76GItkqTGzt+ijYOClWXjAOk2p5KlOK31ZtByzv6U+0Eq2cyW+Tn2SuM1Fxat5lnd+VT6fdDLpXkp2LdyHnPW9OQMS8di0ibLiJ+XkLuHBI98UwPwyzxqddZJj1V60a5ksXKbDOJBPMnOz2mLOXq7e48z7RasmMPrOdPlVcU2jAl30UbLV9ZfcprFULp+deyzHW1797WM+9lp172zoqf5lKfVoHm57pd+GDstwmC/XdFVLBxeE1jmJbUM+/Kgqh+ZdObfteOFof/aG/qLe/da+Vb0grdFLt8zahjdqtPLZde60ZOoxv9fsAlx3wiPxXrZs7L7aNjU5+XDkWkTBdRPy8gw09t8nbdTw7DfCEd1GlaT7vqbZpUn3pEW5m78bnq0/U9HbtiPXuqvKTQog0N9Iu00fLV1SfUYW930I0/TYPd36BLB+llbD6v5aEpSLC7aKPlUZ8PpZcjHDRFg93foEsH6WVsPq/loSlIsLtoo+XPU5/wCNpISwDwYWwCwGNAfQIAAABAPVCfAAAAAFCP89TnwctCma/d+FLljSMS6+nGVnnQVbpeQunFzxgNxnC9S5qFneP9rPd9NkEvfkKnkGB30UbLN6M+C6muPm+2W0wb6SXY75C5Z+4rP8x3AZ1Lc02+gwZjuEd9/lE63n9Pfea+sU4dhuEb12MrELE6k2/4iU4C2ztVQ4+cNyF7loT5vB5VXwibfEusMKM6lF634Y1LIGmj5VGffdgtpo30EpyuPo+/bb5k+t7vZ1c0GAPq8y7yXv4q376rjL38jz4kzCl1GtZLQxrnZZ53vG1evmI+q081Q3ph2uuS2HnbPLi00fLV1Wfs/NV7sfrfe5VlEutvdVavkjlV2APBHSRj8AHfYKrwP1O0/vz8aZiWZVm+Pure17h6n9cdYZjmG60D540+UpYDjBcjb8WGoeBt88O0yG9HHfrSpnewlB+vi5zQK7GrTdfJOUpAnuCIjk13aUsZXEa/H3DJMZ/IT8W6mfPqMVQbxfq8dCCicGKJ+3kJpYeodfQVDENn74T4jH94Y8z59qiy4zi/5zEo97zRrHv7OF8kMiPwDenW014rVef9NTpVXlEYoQ0N9Iu00fKV1acc04kvbYpPloSfiJbXKrzv7DgfwsloYTlivv93DFmnwH7Qq/p8z+OqbfSTQTfYS8jpDi1M0fJOZ4XOq33kRCY+uxl1SO6kZMg22bvH+/DooBaqDng98P2p5mc8drXpKnTwNeQdMlJjU6ZNMLjcmnYJhpDc/FStGzmv/VZHsT4vHYrIUp/NfWlT4KrkrGHo2EpddbfrdKxHCaz/LSEm1GfpbCN6KmrIsO7vLs7o1cs08djznb+iMEYbGugXaaPlq6rP2AwTqs9AjyQLHSeyBcA2SELxGQyhrLVPcRq4bmD6eRGF3eEs+kYLHTWododuN+aQ0Ztiz3leNFmwTtOfn2qh6oDs6vf7vSzLZwkiJlLs2NWma2B0l1OeNurYVCSndiw66zp1fn6q1ovG+w5D+yLS1afh5yUUzVLi+kH+MJSm4vFE63QvgheEJKfnmPrUrXtX3t3V9OA22NCQaV0Rr5FIU7HnT5VXFNp+taKBfpE2Wr62+jQ3sdWZekrtrgdo13VVY+vW2jmalBHaop/ys0x9qn5exIEjXGYjW620bezPqJ5DTq3GQWDdblmC5YDCk29t3v/6/cm+eMokY4+kTTecmjZ/P9zBpfb7cZey8zORdcnxnj8QDkZ0f4LlH6Lck87sYSg3cQuDiTpWZ3jKq87zYTVbLQn1aVmXc90UOR9QDUWsR0nEHpA/VV5RWOBZZLPcyQLy+E31mb/2mTz1j+iVTH++fIaJMxlcsfZZtbvLF7Hia5+qLIsfC+NrHskltMCQe47vz8Gy1VWLMfX52TFq3S+Mt9IPqk9jyCQG1+larcjPlPOx8S4Lf3rtMxRAucNQVJAMxqozQ365ppwzIw/nbzG1G083xffQUMx6FHcsZeyUP1VeURihDQ30i7TR8lXVpzumE/d9KgfybZtRv+/z9RpnscKS3b7j/J5n77ad1ZCpmdy//7lkqU/Tz4vICV8Lc0je9/l13jhArrd6ek3lt5z4bfWme9/ny9OfYkunF9T29lvkO0+KxSz/YpF236eIXb3v82fVZ2TIeIPL6PdDLpXkp2LdyHnPW9OQMS8diyiYWOJ+XkLuHBI98YwOw7WKjNlQq7NMeqrWjXIli5XZZhIJ5k92ekxZytXb3XmeabVkxx5Yz58qryi0aUMD/SJttHxl9SkP9+Is3r+WZR7Iv3tbz7yXnXptjPP7HWgj/Xz06644/ZQu2erT8PMi8sIPwxymJfXMe3ypzw5y7Whx+I/2pnJdyumoMJeMQjfFvleCrcNQrE4Zu/rM+6+qz8iQ8QeX0e8HXHLMJ/JTsW7mvNzeOTX1U0Sflw5F5E8sKT8vIMNPbfJ23Y8Pw1fJUAnqNK2nXfU2TapPPaKtzN34XPXp+p6OXbGePVVeUmjRhgb6Rdpo+erqE+qwtzt+phvtA0Tezs9spQYDa9Clg/QyNp/X8tAUJNhdtNHyqM+H0ssR7la29YNCGfrYVmowsAZdOkgvY/N5LQ9NQYLdRRstf576hEfQRlq2Dq0E9SHrAOAxoD4BAAAAoB6oTwAAAACox3nq8+BloczXbnyp/kyx9XRjqzzoKl2tUM7s4tz3Pl7/8oMyGkyb613SLOxMhrPe91lc5xU0mAzwJEiwu2ij5ZtRn4XcNSN38yadNtJLsN8hc8/cV37Yr8/SOKWLm8mTstjbS5u71Ocfpf34e+rTeMNa3jAM37geOxuL1Zl8cDA6ELZ3qoYeOW9C9iwJ84mWim2ZfEus2FlWkG+dNy6BQxstj/rsw24xbaSX4HT1eeht898S5dD1LPX5Ibvxm0sb1GfT6nOYFvn2XWXspYdhpjmlTsN6aUjjvMzzjrfNy1fMx52X74v3r3ho1vO8zrXO2+bBo42Wr64+Y+ev3qvi/96rLJNYf6uzepXMqcIeCO4gGeUHJ7UdvTElgx7Xt80vy9dH3fsaV+/zuiMMUzabf9QI1gK0PlJOyI0XI2/FhqHgbfPDtLzFRFf2qbfwp+Og9g0l5fc4v5fF7GIzP/1UVHLeSsVD6a3HfmjD1Nh0l7aUiIx+P+h7bn4q1s2cV4+hWnfo/X4sIrVOv5HDqsb5vUyj0UdllB6i1pQtGIae41EFFf+UyJjz7VFlx/HvI7tR9alZ9/ZxvkiU7YNuPe11ifX8qfKKwghtaKBfpI2Wr6w+5ZhOfGlTfLJEHoajX9qUlUilknBJCo/w03kRKaKrz/c8rtpGPxn0T38vIKc7tDBFyzudFTqv9pETmfjsZtQhuZOSIdtk7ys6/+igFqoOeD1geRBUM87vebK6WM9POxXDVZAwFY+mtxL7wQ0zxqZMmzAip6ZdgiEkNz9V60bOa7/V7rD6/UhEap1KI/ut+tkkFXsehYeo1af8Yej7ne1LmEx5K8SB9eGzfJpQn6WzjWj/AG/NUrPu7y7O6NUvwL20BrFijjh/RWGMNjTQL9JGy1dVn7EZJlSfgRpIFjpOZM+62yAJxWcwhLLWPsVp4LqB6edFFHaHs+gbLXTUoNodut2YQ0Zvij3nedFkwTpNf36qhaoDsqvf7/eyRNSnnyE5XexUYqViUB5PxX3pHcZ+cMOcsalITu1YlKUYiieWWH6q1ovG+w5DByOK+imSUSRlsUt7/dwQoip/GKrxWtXbdXpXL/JDkmM3pj51656OdFfTzW9dKsM5pT69hvj8ybYe7pE5VV5RWNAbUI02Wr62+jQ3sdWZekrtzMjqdV3V2Lq1do4mxVZoSP1Zpj5VPy+isDt2NLLVStvG/ozqOeTUahwE1u2WJVgOKDz5ln/0j9mJo7WbIZEu1tPG6ovwkKul4tH0jnmguXRe2qgRqf1+3KXs/ExkXXK85w+EgxHlj81lGoZpXpZt+il2aa+f25ap6xLRSgMfg0yO1Rme8mYOhK2WhPq0rMu5bsq58v8Sa9kR66kKiqznT5VXFMbIjNvsTdjLb6rP/LVPXQNp6wG62YL2/QwTZzK4Yu2zaneXr6/E1z5VqRM/wsXXPJKrO4Ehd33DP/54E3poMaY+5Y5aLE6GxE4wrLXPTPWppeLh9C7Z+oAwMoZMYnCdrtWK/Ew5HxvvsvC+tc/P/6ZpnoZxnkc/J3Nd2uvn19dAumUNQ1FBUrhZdYbWE746Z0Yezt9iajeeblmhxKxn7F5gPX+qvKIwQhsa6Bdpo+Wrqk93TCfu+1Rmz22bUb/v8/UaZ7HCkt2+4/yeZ++2ndWQqZncv/+5ZEkT08+LyAlfC3PQ74FTnDeO7uutnl5T+S0nflu96d73+fL0p9jS6QW1vf0W+c6TYjFLLs0FnSMzxOxiPT+L1GeQimekdwX1GRkyXkRGvx/0PT8/FetGznvemobMfj8SkVqn2sifFP671Pl2U1QLKZ9cP6MnntFh6IUaRauzTHqq1o1yJYuV2WYSjexPds4Ydk/DfZ+1M3Nr981SrvWSqfKKQps2NNAv0kbLV1af8nAvzuKDS4vW7Pnd23rmvezUa2Obt/0qgzq+7oqlHOmSrT4NPy8iL/wwzGFaUs+8x+9PsINcO1oc/qO9qaz/OR0V5pJR6KbY90qw2T5eF/uGI11s5qdnS8v50JDV8nqdBkrsEXarz8iQ8SMy+v2AS475RH4q1s2cl9s7p6Z+a+r9fiwitU6tkVf1tumaaurTTOTMYVjkX1BnZBilXPU2TapPPaKtzN040H8iaRQ3E+rT9X2H9YKp8pJCizY00C/SRstXV59Qh73d8TPdqEzR0GL3N+jSQXqJqBc/oVNIsLtoo+VRnw8F9ZnBtqSADP3QYPc36NJBeomoFz+hU0iwu2ij5c9Tn/AI2khLAAAAeCyoTwAAAACoB+oTAAAAAOqB+gQAAACAeqA+AQAAAKAeqE8AAAAAqMd56pOHpZuC7oAdNJg2Dbp0kF4i6sVP6BQS7C7aaHnU50OhO2AHDaZNgy4dpJeIevETOoUEu4s2Wh71+VDoDthBg2nToEsH6SWiXvyETiHB7qKNlj+uPp0v2DpfnVU//EzhtYV0B4XPSJsGXfqRiHrxk8JOC0mwplr+dResfT4UugN20GDaNOjSQXqJqBc/oVNIsLtoo+VRnw+F7oAdNJg2Dbp0kF4i6sVP6BQS7C7aaHnU50OhO2AHDaZNgy4dpJeIevETOoUEu4s2Wv489QkAAAAAkAL1CQAAAAD1QH0CAAAAQD1QnwAAAABQD9QnOPzT/gEAAACcRaPqs41Hss6kl4hQnwAAAHApl6rP/YqrVa12QUTb1wfmMVaofsqg3Is5sTfqEwAAAC6lO/UpPhUl1FotTo9onFc1uf1XLTzqwGuc3xkth/oEAACASzlFfQpFKFSTw5/e2Yp9TeVut4msYVq2jYdpcSx8tg5XBYdpWaZpjhnaql+3FJvWimichRL8bqIW6j+z+Wu5v7XPcTYrQX0CAADApZygPodpkdeHxaXdiFSSO8n1vXGahm1PqTY9Q+vPrXSrZ5iWd1Do/P+7l9hyq6hmRLK6j+xUCyMOiBBsVvNceQcAAIBbOUl9mrc0mmtsq0DzNOW25zx79X512N+64rIs73n0RF8oH9VCRw0GmrFmRMs0rPLx81MtjDjgq8/vauy66DqtjbbMM+oTAAAAbuUE9flSLmivxZ5UEle035tWCwXdRystjqwSF6aXafiKPLm71H9qoXvt3F9olDqvSkTnrH36dqZNTPv+r87aS6WoTwAAALiUc9TnSnyhzlxoVD8ahLsAAAEXSURBVFcK/5Tm+kdffX50WdHapyoKVfVZJaKK932uu8+fBV/u+wQAAIB7OEF9insJ9Tsztd/j7DzPY9wl+XLUmnflfVu93HHf5+s1zn/3fWqrpJUiOuWZ98z7PufPevH8uahvbo/6BAAAgEs5Ze3TfgvS+kS4/4T4PEtZFXlC/G+feXwZi5M7n3lXFkS9h5JqRKRtaRW6D907q6M5b5+StwjwxiUAAAC4i1PUZzUyhdbR69PPhWfeAQAA4Gb6Up+vl1wCtGUo6tMA9QkAAAA305/6zAH1uRvUJwAAAFzKM9UnAAAAALQJ6hMAAAAA6oH6BAAAAIB6oD4BAAAAoB6oTwAAAACoB+oTAAAAAOqB+gQAAACAavwP4c/p3fCOv/cAAAAASUVORK5CYII=
未完待续...
页:
[1]