免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2408 | 回复: 3
打印 上一主题 下一主题

(续)CLUSTER4.5 + GFS4.5 + Oracle10g HA调试文档(二) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-29 12:26 |只看该作者 |倒序浏览
Ⅵ、Oracle10g For Linux安装

(1)、安装前准备
A:检查oracle安装所需要的包,应该全部通过,没有通过的,安装该rpm包,redhat光盘里有.
[root@smsdb01 /]#rpm -q gcc make glibc binutils openmotif setarch compat-db compat-gcc-32 compat-gcc-32-c++ compat-libstdc++-33 compat-libstdc++-296

B:创建Oracle组和用户帐户
创建用于安装和维护 Oracle 10g 软件的 Linux 组和用户帐户.用户帐户将称为 oracle,而组将称为 oinstall 和 dba.以 root 用户身份执行以下命令:
[root@smsdb01 /]#/usr/sbin/groupadd oinstall
[root@smsdb01 /]#/usr/sbin/groupadd dba
[root@smsdb01 /]#/usr/sbin/useradd -m -g oinstall -G dba oracle
查看一下oracle用户与组的设置情况
[root@smsdb01 /]#id oracle

设置 oracle 帐户的口令:
[root@smsdb01 /]#passwd oracle
Changing password for user oracle.
New password: oracle (不回显)
Retype new password: oracle(不回显)
passwd:all authentication tokens updated successfully.

C:创建存储 Oracle 10g 软件和数据库文件的目录
本项目中:
oracle根目录:/usr/local/oracle10g
oracl程序安装目录:/usr/local/oracle10g/db
oracle建库目录是:/usr/local/oracle10g/oracle10g_db
注:此目录是磁盘阵列库格式化后mount的目录,见上一章

建立oracle安装相关目录:
[root@smsdb01 /]#mkdir -p /usr/local/oracle10g
注:此命令可以不打,因上一章mount磁盘阵列库的mount目录时,已经递归建立该目录
[root@smsdb01 /]#mkdir –p /usr/local/oracle10g/db
[root@smsdb01 /]#mkdir –p /usr/local/oracle10g/oracle10g_db
[root@smsdb01 /]#mkdir –p /usr/local/oracle10g/source
注:为了将来用oracle用户安装oracle方便,将源文件从/root/oracle10g目录移动到/usr/local/oracle10g/source
[root@smsdb01 /]#cd /root/oracle10g
[root@smsdb01 oracle10g /]#mv 10g_win32_db.zip /usr/local/oracle10g/source
解压源文件
[root@smsdb01 /]#cd /usr/local/oracle10g/source
[root@smsdb01 source/]#unzip 10201_database_linux32.zip
给oracle10源程序(安装文件)可执行权限
[root@smsdb01 source/]#chmod a+x  -R *
将/usr/local/oracle10g以及以下所有目录、文件权限修改为oracleinstall
[root@smsdb01 /]#chown -R oracleinstall /usr/local/oracle10g

D:配置 Linux 内核参数
Linux 内核非常出色.与大多数其他 *NIX 系统不同,Linux 允许在系统启动和运行时修改大多数内核参数.完成内核参数更改后不必重新启动系统.Oracle 数据库 10g 需要以下所示的内核参数设置,其中给出的是最小值,因此如果您的系统使用的值较大,则不要更改它.
编辑 /etc/sysctl.conf 文件,添加或更改这些参数.
[root@smsdb01 ~]#vi /etc/sysctl.conf
修改内容如下:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
完成后,运行以下命令激活更改:/sbin/sysctl -p
[root@smsdb01 ~]#/sbin/sysctl –p

E:设置oracle环境变量
[root@smsdb01 /]#su - oracle
[oracle@smsdb01 ~]$vi .bash_profile
增加以下内容
export ORACLE_BASE=/usr/local/oracle10g
export ORACLE_HOME=$ORACLE_BASE/db
export ORACLE_SID=moss
export PATH=$PATHORACLE_HOME/bin
保存退出,source一下.bash_profile文件,使之立即更新
[oracle@smsdb01 ~]$source .bash_profile
检查一下oracle的环境变量是不是有了oracle以上设置的变量
[oracle@smsdb01 ~]$env

F:启动oracle用户的vnc服务
检查一下之前是不是有root用户开启了vnc服务,因安装oracle需要在图形界面,且是oracle用户下安装,所以必须启动oracle用户的vnc服务.
[oracle@smsdb01 ~]$ps –ef |grep vnc
[oracle@smsdb01 ~]$vncserver :1
New 'smsdb01.scn.com:1 (oracle)' desktop is smsdb01.scn.com:1

Starting applications specified in /home/oracle/.vnc/xstartup
Log file is /home/oracle/.vnc/smsdb01.scn.com:1.log
提示配置vnc服务的密码,本项目中密码为sctvnet

说明:此举将在当前用户oracle的目录下创建了.vnc目录,以及xstartup配置文件.第一次执行vncserver命令启动vnc服务器端,用vnc客户端连接远程桌面时,因一些vnc服务器端的配置参数未配置,登陆远程桌面色彩等达不到使用要求,因此需要修改vnc配置文件:
[oracle@smsdb01 ~]$vi ~/.vnc/xstartup
把下列2句前的#号的注释去掉
#unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc

twm &
句前加上#号注释掉,并加上以下一句
startx &
保存退出

(2)、开始安装oracle10g

在笔记本电脑上执行vnc客户端

vnc密码,此处设置的是racle

打开桌面的终端后,进入oracle的解压后目录
[oracle@smsdb01 ~]$cd /usr/local/oracle10g/database
[oracle@smsdb01 database]$./runInstaller
弹出oracle10g的图形安装界面,开始安装oracle10g,如下

弹出窗口,将create starter Database (additional 720MB)的勾去掉,暂不建数据库,只安装oracle,见下图

系统要检测一下


系统检测一下环境


限于篇幅,oracle的安装图例就先写到这里,按照提示,一步一步安装好oracle10g即可(安装过程中需要以root用户身份,按照安装提示去执行2个脚本)

(3)、同样的步骤,在服务器2上,做同样的操作,包括用户名、组、目录建立、oracle环境变量、内核参数等要完全一致.


Ⅶ、Oracle10g For Linux建数据库
(1)、建立数据库前的准备
检查共享的磁盘阵列柜的GFS分区是否正常挂载
[oracle@smsdb01 ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/cciss/c0d0p1      25G  5.2G   18G  23% /
none                  1.9G     0  1.9G   0% /dev/shm
/dev/cciss/c0d0p3      41G   81M   39G   1% /home
/dev/mapper/oracle10g-oracle
                      559G  933M  558G   1% /usr/local/oracle10g/oracle10g_db

(2)、开始在服务器1上的oracle10g建立moss数据库
在笔记本电脑上执行vnc客户端,以oracle身份,登陆服务器1的linux远程桌面,打开终端,执行dbca建库命令,如下图


弹出图形界面的欢迎窗口,如下:


建立数据库


选择General Purpose,点next


建立一个名字为moss的数据库


把Configure the Database with Enterprise Manger的勾去掉,点Next


输入moss数据库的密码,这里设置的是****


选择数据库安装的文件系统,选择默认File system,点Next继续


选择数据库安装的位置,这里很重要,我们要把数据库建立在共享的磁盘阵列柜的GFS存储空间上,之前我们曾把以/dev/mapper/oracle10g-oracle (/dev/oracle10g/oracle逻辑卷设备的软链接,系统自动建立的)以GFS文件系统挂载到/usr/local/oracle10g/oracle10g_db目录,这里,我们建立数据库的位置就选择/usr/local/oracle10g/oracle10g_db目录.
因此,我们在这里选择Use Common Location For All Database File,找到我们的gfs文件系统挂载的目录:/usr/local/oracle10g/oracle10g_db后,点OK,然后点Next继续

将Specify Flash Recovery Area的勾去掉,然后点Next继续

点Next继续


定义数据库的字符集.选择Character Sets,在Database Character Set中选择Choose from the list of Character Sets,下拉框中选择UTF8 – Unicode 3.0 UTF-8 Universal Character Set,在National Character Set中选择”UTF8 – Unicode 3.0 UTF-8 Universal Character Set,CESU-8 compliant”,其他不变,点Next继续


点Next继续


点Next继续


点Finish结束,开始创建数据库


确认一下,点OK开始建库


数据库建立完成,点Exit退出


(3)、在数据库2上建moss数据库
以上在服务器1上建立了moss数据库,之后,我们要以oracle用户身份用vnc登陆服务器2,在其上面建立同样的moss数据库,注意建库的存储文件夹,同样是/usr/local/oracle10g/oracle10g_db;

服务器2建库,要注意2点:
A、        在服务器2建立数据库前,建议把服务器1的数据库以及监听程序关闭
命令如下
[oracle@smsdb01 ~]$ lsnrctl stop
[oracle@smsdb01 ~]$sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 17 11:35:11 2008
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL>connect / as sysdba
Connected.
SQL> shutdown immediate

B、服务器1建立oss数据库时,在/usr/local/oracle10g/oracle10g_db目录下生成了如下文件,建议全部删除(服务器2建库时,会在该目录下再次生成这些文件)
[oracle@smsdb01 ~]$ cd /usr/local/oracle10g/oracle10g_db/moss/
[oracle@smsdb01 moss]$ ll
total 955084
-rw-r-----  1 oracle oinstall   7061504 Jul 17 11:38 control01.ctl
-rw-r-----  1 oracle oinstall   7061504 Jul 17 11:38 control02.ctl
-rw-r-----  1 oracle oinstall   7061504 Jul 17 11:38 control03.ctl
-rw-r-----  1 oracle oinstall  52429312 Jul 17 11:35 redo01.log
-rw-r-----  1 oracle oinstall  52429312 Jul 16 14:46 redo02.log
-rw-r-----  1 oracle oinstall  52429312 Jul 16 14:46 redo03.log
-rw-r-----  1 oracle oinstall 262152192 Jul 17 11:34 sysaux01.dbf
-rw-r-----  1 oracle oinstall 503324672 Jul 17 11:34 system01.dbf
-rw-r-----  1 oracle oinstall  20979712 Jul 16 22:00 temp01.dbf
-rw-r-----  1 oracle oinstall  26222592 Jul 17 11:35 undotbs01.dbf
-rw-r-----  1 oracle oinstall   5251072 Jul 16 14:46 users01.dbf
[oracle@smsdb01 moss]$ rm –rf *

Ⅷ、Oracle10g手工测试

服务器1和2建立数据库之后,我们要手工分别测试一下服务器1和服务器2的数据库.
(1)、测试准备
分别在两台服务器上以oracle身份执行以下命令,关闭服务器1和2上的oracle的数据库及监听程序
[oracle@smsdb01 ~]$ lsnrctl stop
[oracle@smsdb01 ~]$ lsnrctl start
[oracle@smsdb01 ~]$sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 17 11:35:11 2008
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL>connect / as sysdba
Connected.
SQL> shartup
SQL> shutdown immediate
(2)、手工在终端上用上述命令测试关闭及启动oracle服务和监听;
(3)、在笔记本电脑上,使用pl/sql工具连接测试,测试步骤(略);

说明:测试之后,请保持2台服务器的oracle均为关闭状态,目的是为之后的cluster的虚IP测试,减少出错可能.

Ⅸ、Cluster配置、虚IP测试
(1)、修改hosts文件
保证两台服务器的hosts文件为如下显示
[root@smsdb01 ~]# more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1                localhost.localdomain localhost
10.10.10.201   smsdb01.scn.com
10.10.10.202    smsdb02.scn.com

(2)、检测磁盘阵列柜是否被服务器1和2正常挂载
root用户身份,分别在两台服务器上检查,磁盘阵列柜上建立的逻辑卷,是否被正确mount挂载
[root@smsdb01 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/cciss/c0d0p1      25G  5.2G   18G  23% /
none                  1.9G     0  1.9G   0% /dev/shm
/dev/cciss/c0d0p3      41G  133M   39G   1% /home
/dev/mapper/oracle10g-oracle
                      559G  1.5G  557G   1% /usr/local/oracle10g/oracle10g_db

(3)、检测cluster、GFS相关服务的状态
root用户身份,分别检查两台服务器的cluster各个服务状态
[root@smsdb01 ~]# service ccsd status
ccsd (pid 2824) is running...
[root@smsdb01 ~]#service cman status
Protocol version: 5.0.1
Config version: 30
Cluster name: SCN
Cluster ID: 544
Cluster Member: Yes
Membership state: Cluster-Member
Nodes: 2
Expected_votes: 1
Total_votes: 2
Quorum: 1   
Active subsystems: 8
Node name: smsdb01.scn.com
Node ID: 1
Node addresses: 10.10.10.201
[root@smsdb01 ~]#service rgmanager status
clurgmgrd (pid 3305 3304) is running...
[root@smsdb01 ~]#service fenced status
fenced (pid 290 is running...
[root@smsdb01 ~]#service clvmd status
clvmd (pid 2920) is running...
active volumes: oracle
[root@smsdb01 ~]#service gfs status
Active GFS mountpoints:
/usr/local/oracle10g/oracle10g_db

(4)、用cluster的gui工具Cluster Management配置cluster
A、        启动root用户的vnc服务,远程桌面连接服务器1
[root@smsdb01 ~]# ps -ef |grep vnc
root     26603 26047  0 12:50 pts/1    00:00:00 grep vnc
[root@smsdb01 ~]# vncserver :1
New 'smsdb01.scn.com:1 (root)' desktop is smsdb01.scn.com:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/smsdb01.scn.com:1.log

B、        打开Appications – system settings – Server settings – Cluster Management


建立一个集群,名字SCN
添加2个cluster node ,名字分别为smsdb01.scn.com和smsdb02.scn.com;
添加1个Failover Domains,名字是smsdbHP,将smsdb01.scn.com和smsdb02.scn.com两个node加到smsdbHP域中,并设置smsdb01.scn.com优先级为1,smsdb02.scn.com优先级为2(数字越小优先级别越高);
Resource:增加1个resource资源:
         IP Address:192.168.16.203
添加一个Service,名字是oracle,在Service Management中,选择Failover Domains是smsdbHP,并点击Add a Shared Resource to this Service,将Resource资源记录IP添加进来.

回到主界面,点击File ¬– Save,将配置保存为/etc/cluster/cluster.conf,然后点Send to cluster把配置文件同步到第2台服务器

(5)、重新启动与cluster、GFS、clvmd相关的服务
在两台服务器上分别执行
[root@smsdb01 ~]# service ccsd restart
[root@smsdb01 ~]# service cman restart
[root@smsdb01 ~]# service rgmanager start
[root@smsdb01 ~]# service fenced restart
[root@smsdb01 ~]# service clvmd restart
[root@smsdb01 ~]# service gfs restart

(6)、Cluster的虚IP测试
根据cluster的配置,正常状态下,服务器1,即192.168.16.201是活跃状态,服务器2,即192.168.16.202是备用状态,这在Cluster Management的GUI的工具中是可以看到的;
ssh以root用户登陆192.168.16.201,将服务器1执行init 6重新启动,在这个过程中,观察Cluster Management里的State,会发现服务器2成为活跃主机,而服务器1显示dead;随着服务器1启动完毕,服务器1将接替服务器2成为活跃状态,服务器2又将成为备用状态;
在整个测试过程中,在笔记本上cmd命令行,连续ping虚IP地址192.168.16.203,应该是一直成功的.2


Ⅹ、Cluster + Oracle10g联合测试
(1)、将oracle的三个脚本oracle、dbstart、dbshut通过ssh客户端的FTP功能,分别上传到两台服务器的/home/oracle目录;
(2)、在两台服务器上执行以下命令,修改文件属主以及增加任意用户的可执行权限
[root@smsdb01 ~]# cd /home/oracle/
[root@smsdb01 oracle]# chown oracleninstall oracle dbstart dbshut
[root@smsdb01 oracle]#chmod a+x oracle dbstart dbshut
(3)、手工关闭oracle数据库及监听程序
先在服务器1上以oracle身份执行
    [root@smsdb01 ~]#su - oracle
[oracl @smsdb01 ~]$./dbstart
[oracl @smsdb01 ~]$./dbshut
应该可以正常启动及关闭oracle数据库和oracle的监听程序
    之后在服务器2上执行
[root@smsdb02 ~]#su - oracle
[oracl @smsdb02 ~]$./dbstart
[oracl @smsdb02 ~]$./dbshut
有可能报错,原因可能是oracle在关闭状态,而监听程序在启动状态;
我们只需要手工方式确保服务器2的oracle服务以及监听服务关闭即可,具体方法可看一下dbshut脚本的内容
关闭监听程序命令
[oracl@smsdb02 ~]$lsnrctl stop
关闭oracle服务的命令
[oracle@smsdb02 ~]$sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 17 11:35:11 2008
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL>connect / as sysdba
Connected.
SQL> shutdown immediate
或者SQL> shutdown abort (谨慎使用)

(4)、启动root用户的vnc服务,远程桌面连接服务器1
[root@smsdb01 ~]# ps -ef |grep vnc
root     26603 26047  0 12:50 pts/1    00:00:00 grep vnc
[root@smsdb01 ~]# vncserver
New 'smsdb01.scn.com:1 (root)' desktop is smsdb01.scn.com:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/smsdb01.scn.com:1.log

(5)、设置Cluster Management,增加资源记录
打开Appications – system settings – Server settings – Cluster Management
在已有的配置中的Resource:
增加2个resource资源,分别是:
GFS:名字是gfs_disk,Mount Point是/usr/local/oracle10g/oracle10g_db,Device是/dev/mapper/oracle10g-oracle,把Force Unmount点上
Script:名字是oracle_script_ha,文件路径在/home/oracle/oracle

在名字为oracle的Service中的Service Management中,选择Failover Domains为smsdbHP,并点击Add a Shared Resource to this Service,将刚添加的Resource资源记录GFS和oracle脚本添加进来.

回到Cluster Management主界面,点击File ¬– Save,将配置保存为/etc/cluster/cluster.conf,然后点Send to cluster把配置文件发送到第2台服务器.

(6)、重新启动cluster的相关服务
在两台服务器上分别执行以下命令
[root@smsdb01 ~]# service ccsd restart
[root@smsdb01 ~]# service cman restart
[root@smsdb01 ~]# service rgmanager start
[root@smsdb01 ~]# service fenced restart
[root@smsdb01 ~]# service clvmd restart
[root@smsdb01 ~]# service gfs restart
重新启动与cluster相关的服务,此时可以进行oracle服务的Cluster的测试(服务器1的优先级为1,高于服务器2的优先级2),例如:
1、拨掉cluster里活跃(active)主机 (服务器1)的网线, 观察cluster中备用(standby)主机(服务器2)是否接替了活跃(active)主机(服务器1)的工作;
2、重新启动活跃(active)主机(服务器1),观察cluster中,备用(standby)主机(服务器2)是否接替了活跃(active)主机(服务器1),当原活跃(active)主机(服务器1)重新启动完毕,观察原活跃(active)主机(服务器1)是否重新接替了备用(standby)主机(服务器2),成为活跃状态.
3、以上测试过程中可在笔记本电脑上
用ping虚IP来验证集群虚IP是否正常;
客户端ssh连接虚IP来验证集群虚IP是否正常,且哪台服务器是active状态;
可通过PL/SQL地址是虚IP的连接,测试oracle,来验证集群服务的oracle是否正常,再用实际IP地址连接测试,判断cluster状态.
  
排错命令:
[root@smsdb01 ~]#tail -f /var/log/messages
[root@smsdb01 ~]#dmesg

八、问题遗留
(1)、关于自动mount磁盘阵列库
本次项目实施过程中,遇到一个关于自动mount GFS格式的共享磁盘阵列库空间的问题。按照redhat工程师的说法,有三种解决方式,分别是:
A:在Cluster Management配置过程中,将GFS格式化的共享磁盘以Resource(资源)的方式加入进来;
B:修改/etc/fstab,添加一句:
/dev/mapper/oracle10g-oracle /usr/local/oracle10g/oracle10g_db default 0 0
C:写一个简单脚本,给以root的可执行权限,内容如 :
#!/bin/bash
mount -t gfs /dev/oracle10g/oracle /usr/local/oracle10g/oracle10g_db
将文件放在/usr/local/oracle10g/目录下,然后在/etc/rc.d/rc.local文件中加上此句。
上述三种方法,redhat工程师建议使用第一或第二种,本次项目中,经过试验有一个现象,2台服务器重新启动后,只有第一台服务器成功自动mount,而第2台服务器则没有实现自动mount.

(2)、关于fence问题
本次项目中使用的HP服务器,内置了ilo的fence设备.我们在重新启动服务器时按F8进入BIOS,设置了ilo卡的IP地址(192.168.0.1与2)、用户名与密码(redhat/123456789),并将ILO卡连接至交换机,且将心跳网卡的IP地址与之同段相通,修改hosts文件后,此时,在Cluster Management里将有关fence项加入,试图使用ilo卡来接替网卡心跳线工作,cluster启动失败;使用如下命令检测ilo卡,也返回超时失败消息:
[root@smsdb01 ~]#fence_ilo -a 192.168.0.1 -l redhat -p 123456789 -o status
原因暂时不明,fence设备暂时未使用.

*****视频事业部
系统工程师 任** 2008-07-21

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
2 [报告]
发表于 2008-07-29 12:34 |只看该作者
好文,收藏先。。。。

论坛徽章:
0
3 [报告]
发表于 2008-07-29 13:57 |只看该作者
1,没有rac不用gfs也可以啊。
2,没有fence也敢生产环境用?
3,oracle不归档?没有备份方案?

论坛徽章:
0
4 [报告]
发表于 2008-07-29 14:13 |只看该作者

回复 #3 jiecho 的帖子

1,没有rac不用gfs也可以啊。
2,没有fence也敢生产环境用?
3,oracle不归档?没有备份方案?

--------------------
1、不用GFS,理论上可以我知道,但有可能因为两台服务器调试cluster过程中、建立数据库时,操作不当把oracle数据损坏
2、有fence,现在不是没调出来么?所以请教(客户知道这件事,说好以后慢慢解决,暂时用网卡接网线做心跳)
3、我的此次任务是去调cluster。oracle的备份与恢复,由项目经理和ORACLE DBA负责

oracle不归档是啥意思我不知道,有需要的地方由DBA去管吧

我去调试HA之前,项目经理把数据库迁移到一台单机oracle 上,我HA调试完毕,他再把数据迁移回来,备份方案让DBA来做(DBA在北京)

我、项目经理、DBA是三个人,呵呵

[ 本帖最后由 literr 于 2008-7-29 14:42 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP