最新要闻
- 网友逛鱼店惊喜偶遇鲨鱼产子过程:第一次见 很神奇
- 深圳一公司发布年薪50万岗位:优先录用李一桐粉丝
- 7人吃自助炫300多个螃蟹 医生:过量食用螃蟹或引发多种疾病|世界时讯
- 苹果别对iPhone 15 USB-C限速!不然欧盟不答应
- 加快摆脱中国供应链?库克:苹果接下来就靠印度了
- 什么是成本性态 什么是成本|世界热讯
- 爱成都迎大运宣传稿怎么画(爱成都迎大运宣传句)
- 咖啡色地板配什么颜色家具_咖啡色配什么颜色好看
- 老人推倒摩托车案执行款1.6万已到账 车主10个月维权结束:老人违法不该被宽恕
- 天天百事通!民呼我应|东门一市政路被“霸占”,官方回应来了
- 【环球新要闻】月嫂拍嗝时打盹致婴儿头顶骨骨折 平台:愿退还未完成的服务费
- “挖呀挖呀挖”童谣为何火爆全网?专家解释原因_天天速看
- 全球今日报丨冷冻小龙虾怎么加热 冷冻小龙虾怎么加热才好吃
- 美股银行股周五为何大涨?没有空头想持仓过周末
- 天天速讯:中国特供 NVIDIA缩水版A800显卡遭哄抢:10万元也难买到
- “投资界的春晚”要来了:巴菲特股东大会五大看点_世界微动态
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
2、etcd单机部署和集群部署
上一章我们认识了etcd
,简单的介绍了 etcd 的基础概念,但是理解起来还是比较抽象的。这一章我们就一起来部署下 etcd 。这样可以让我们对 etcd 有更加确切的认识。
【资料图】
1、etcd单实例部署
对于平常的学习,其实搭建一个单机节点是够了的。接下来就讲讲怎么搭建单机节点。
本次部署是在 centos7 系统,cpu 为amd64 上面进行的。
部署是直接使用官方编译好的二进制文件,大家也可以直接看 ectd-releases 界面选择需要的版本,进行部署。
部署步骤如下:
1、下载官方编译好的 二进制文件。大家可以根据自己的系统和cpu架构进行选择。
cd /optwget https://github.com/etcd-io/etcd/releases/download/v3.5.8/etcd-v3.5.8-linux-amd64.tar.gz
2、解压下载好的文件
tar -zxvf etcd-v3.5.8-linux-amd64.tar.gz
3、启动 etcd 服务
cd etcd-v3.5.8-linux-amd64# 启动方式一:前台启动./etcd# 启动方式二:后台启动,日志文件位置可随意选择,有权限读写就可以了nohup ./etcd > /root/etcd.log 2>&1 &
启动的 etcd 进程默认监听的是 2379
端口。我们可以使用 etcdctl 来与 etcd server进行交互。下面展示一个简单的使用案例:
./etcdctl --endpoints=localhost:2379 put foo bar./etcdctl --endpoints=localhost:2379 get foo
我们也可以将 etcdctl 拷贝到 /usr/local/bin 下面,这样使用 etcdctl 时,就不用想上面这样,必须指定 etcdctl 的位置了。
上面启动 etcd 进程的方式比较简单,大家也可以使用 systemd 来进行管理,这样可以实现开启自启了。
编写 etcd.service 文件:
cat > /usr/lib/systemd/system/etcd.service << EOF[Unit]Description=Etcd ServerAfter=network.target network-online.targetWants=network-online.target [Service]Type=notifyExecStart=/opt/etcd-v3.5.8-linux-amd64/etcd Restart=on-failureRestartSec=5LimitNOFILE=65536 [Install]WantedBy=multi-user.targetEOF
启动 etcd 服务以及设置为开机自启
# 重载脚本文件systemctl daemon-reload# 启动 etcd 服务systemctl start etcd.service# 设置 etcd 服务为开机自启systemctl enable etcd.service# 停止 etcd 服务systemctl stop etcd.service
上面就是 etcd 的单实例部署方式了。
2、etcd集群部署
在生产环境中,为了整个集群的高可用,etcd 正常都会集群部署,避免单点故障。接下来我们一起学习如何进行 etcd 集群部署。引导 etcd 集群的启动有以下三种机制:
- 静态启动
预先已知etcd集群中有哪些节点,在启动时通过--initial-cluster参数直接指定好etcd的各个节点地址
- etcd 动态发现
静态配置前提是在搭建集群之前已经提前知道各节点的信息,而实际应用中可能存在预 先并不知道各节点ip的情况,这时可通过已经搭建的etcd来辅助搭建新的etcd集群。通过 已有的etcd集群作为数据交互点,然后在扩展新的集群时,实现通过已有集群进行服务发 现的机制。比如官方提供的:discovery.etcd.io
- DNS 发现
通过DNS查询方式获取其他节点地址信息
静态启动 etcd 集群要求每个成员都知道集群中的另一个成员,也就是在配置文件中写死每个集群成员的地址。 在实际情况下,群集成员的 IP 可能会提前未知。在这种情况下,我们可以使用 etcd 官方提供的动态发现功能来帮助引导 etcd 群集。
接下来我们看一看静态启动、etcd 动态发现
是如何部署的,DNS 发现
的部署方式,大家可以看看文章最后的参考连接,讲解得比较详细。
哈哈,因为 etcd 的部署方式,相对来说还是比较容易的,所以这里偷个懒,大家想看怎么集群部署的话,看文章最后的参考连接。
2.1 单机多实例部署
平常大家自己搭建着玩的话,可以使用此方式来部署一个单机多实例的 etcd 集群,这样管理维护都比较方便。
想要在一台机器上部署 etcd 集群,我们可以借助 goreman
这个工具,goreman 是一个 Go 语言编写的多进程管理工具
,是对 Ruby 下广泛使用的 foreman 的重写(foreman 原作者也实现了一个 Go 版本:forego,不过没有 goreman 好用)。
使用goreman
部署集群,需要我们先按照 go的环境,按照好 go 的环境后,执行下面的命令:
go install github.com/mattn/goreman@latest
注意,上面执行的命令,会将 goreman 按照在 $GOPATH 下面,GOPATH 可以通过 go env 查看。如果执行上面命令后,使用 goreman 命令提示找不到命令,多半是没有将 GOPATH 加入到环境变量中去。
简单的方式 vi /etc/profile。加入下面两句话,然后报错即可。
export GOPATH= 自己的实际路径
export PATH=$PATH:$GOPATH/bin
HostName | ip | 客户端交互端口 | peer 通信端口 |
---|---|---|---|
infra1 | 127.0.0.1 | 12379 | 12380 |
infra2 | 127.0.0.1 | 22379 | 22380 |
infra3 | 127.0.0.1 | 32379 | 32380 |
执行下面步骤之前,需要先将 官方文档 编译好的 etcd 二进制文件下载解压到本机,然后将etcd、etcdctl
这两个可执行文件拷贝到 /usr/local/bin/
下面去。
etcd_cluster_procfile 脚本如下:
etcd1: etcd --name infra1 --listen-client-urls http://127.0.0.1:12379 --advertise-client-urls http://127.0.0.1:12379 --listen-peer-urls http://127.0.0.1:12380 --initial-advertise-peer-urls http://127.0.0.1:12380 --initial-cluster-token etcd-cluster-1 --initial-cluster "infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380" --initial-cluster-state new --enable-pprof --logger=zap --log-outputs=stderretcd2: etcd --name infra2 --listen-client-urls http://127.0.0.1:22379 --advertise-client-urls http://127.0.0.1:22379 --listen-peer-urls http://127.0.0.1:22380 --initial-advertise-peer-urls http://127.0.0.1:22380 --initial-cluster-token etcd-cluster-1 --initial-cluster "infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380" --initial-cluster-state new --enable-pprof --logger=zap --log-outputs=stderretcd3: etcd --name infra3 --listen-client-urls http://127.0.0.1:32379 --advertise-client-urls http://127.0.0.1:32379 --listen-peer-urls http://127.0.0.1:32380 --initial-advertise-peer-urls http://127.0.0.1:32380 --initial-cluster-token etcd-cluster-1 --initial-cluster "infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380" --initial-cluster-state new --enable-pprof --logger=zap --log-outputs=stderr
配置项说明:
参数 | 说明 |
---|---|
--name | etcd集群中的节点名,这里可以随意,可区分且不重复就行 |
--initial-advertise-peer-urls | 建议用于节点之间通信的url,节点间将以该值进行通信。 |
--initial-cluster | 也就是集群中所有的 initial-advertise-peer-urls 的合集。etcd启动的时候,通过这个配置找到其他etcd节点的列表。 |
--listen-peer-urls | 监听的用于节点之间通信的url,可监听多个,集群内部将通过这些url进行数据交互(如选举,数据同步等) |
--listen-client-urls | 监听客户端请求的地址列表url,可以监听多个,多个用逗号分割。 |
--advertise-client-urls | 建议使用的客户端通信 url,该值用于 etcd 代理或 etcd 成员与 etcd 节点通信。 |
--initial-cluster-token | etcd-cluster-1,节点的 token 值,设置该值后集群将生成唯一 id,并为每个节点也生成唯一 id,当使用相同配置文件再启动一个集群时,只要该 token 值不一样,etcd 集群就不会相互影响。 |
--initial-cluster-state | 初始化的时候,集群的状态:new 和 existing 两种状态。new代表新建的集群,existing 代表加入已经存在的集群 |
注意上面的脚本,etcd 命令执行时需要根据本地实际的安装地址进行配置。使用下面的命令启动 etcd 集群。
goreman -f /opt/etcd_cluster_procfile start
使用如上的命令启动启动 etcd 集群,启动完成之后查看集群内的成员。
$ etcdctl --endpoints=http://localhost:22379 member list8211f1d0f64f3269, started, infra1, http://127.0.0.1:12380, http://127.0.0.1:12379, false91bc3c398fb3c146, started, infra2, http://127.0.0.1:22380, http://127.0.0.1:22379, falsefd422379fda50e48, started, infra3, http://127.0.0.1:32380, http://127.0.0.1:32379, false
上面我们使用单机部署了多个etcd实例,模拟一个etcd集群。我们在启动集群的时候,已经知道了各个实例的地址,但是在实际环境中,集群成员的 ip 可能不会提前知道。这时候就需要采用动态发现的机制。
2.2 动态发现启动 etcd 集群
下面的内容全部来自 文章最后的参考连接,如有侵权,请联系删除,谢谢。
参考连接还有 docker 部署以及 dns 部署,大家感兴趣可以去看看。
如前面所述,在实际环境中,集群成员的 ip 可能不会提前知道。在这种情况下,需要使用自动发现来引导 etcd 集群,而不是指定静态配置,这个过程被称为发现。我们启动三个 etcd,具体对应如下:
HostName | ip | 客户端交互端口 | peer 通信端口 |
---|---|---|---|
etcd1 | 192.168.202.128 | 2379 | 2380 |
etcd2 | 192.168.202.129 | 2379 | 2380 |
etcd3 | 192.168.202.130 | 2379 | 2380 |
2.2.1 协议的原理
Discovery service protocol
帮助新的 etcd 成员使用共享 URL 在集群引导阶段发现所有其他成员。
该协议使用新的发现令牌来引导一个唯一的 etcd 集群。一个发现令牌只能代表一个 etcd 集群。只要此令牌上的发现协议启动,即使它中途失败,也不能用于引导另一个 etcd 集群。
2.2.2 协议的工作流程
Discovery protocol 使用内部 etcd 集群来协调新集群的引导程序。首先,所有新成员都与发现服务交互,并帮助生成预期的成员列表。之后,每个新成员使用此列表引导其服务器,该列表执行与 --initial-cluster
标志相同的功能,即设置所有集群的成员信息。
注意:
Discovery service protocol仅用于集群引导阶段,不能用于运行时重新配置或集群 监视。
2.2.3 使用公共发现服务部署集群
当我们本地没有可用的 etcd 集群,etcd 官网提供了一个可以公网访问的 etcd 存储地址。我们可以通过如下命令得到 etcd 服务的目录,并把它作为 --discovery
参数使用。
公共发现服务 discovery.etcd.io
以相同的方式工作,并提供针对过多请求的保护。公共发现服务在其上仍然使用 etcd 群集作为数据存储。
1、创建集群发现
# 使用公共etcd发现服务$ curl http://discovery.etcd.io/new?size=3# 生成的urlhttp://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de
2、部署前准备工作
所有节点均需要安装etcd。以及创建需要的目录。
#创建单独的etcd数据目录mkdir ‐p /opt/etcd/data
3、以动态发现方式启动集群
每个成员必须指定不同的名称标志,否则发现将因重复的名称而失败
etcd 发现模式下,启动 etcd 的命令如下:
# etcd1 启动$ /opt/etcd/bin/etcd --name etcd1 --initial-advertise-peer-urls http://192.168.202.128:2380 \ --listen-peer-urls http://192.168.202.128:2380 \ --data-dir /opt/etcd/data \ --listen-client-urls http://192.168.202.128:2379,http://127.0.0.1:2379 \ --advertise-client-urls http://192.168.202.128:2379 \ --discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de# etcd2 启动 /opt/etcd/bin/etcd --name etcd2 --initial-advertise-peer-urls http://192.168.202.129:2380 \ --listen-peer-urls http://192.168.202.129:2380 \ --data-dir /opt/etcd/data \ --listen-client-urls http://192.168.202.129:2379,http://127.0.0.1:2379 \ --advertise-client-urls http://192.168.202.129:2379 \ --discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de# etcd3 启动 /opt/etcd/bin/etcd --name etcd3 --initial-advertise-peer-urls http://192.168.202.130:2380 \ --listen-peer-urls http://192.168.202.130:2380 \ --data-dir /opt/etcd/data \ --listen-client-urls http://192.168.202.130:2379,http://127.0.0.1:2379 \ --advertise-client-urls http://192.168.202.130:2379 \ --discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de
需要注意的是,在我们完成了集群的初始化后,这些信息就失去了作用。当需要增加节点时,需要使用 etcdctl 进行操作。为了安全,每次启动新 etcd 集群时,都使用新的 discovery token 进行注册。另外,如果初始化时启动的节点超过了指定的数量,多余的节点会自动转化为 Proxy 模式的 etcd。
4、结果验证
集群启动好之后,进行验证,我们看一下集群的成员:
$ /opt/etcd/bin/etcdctl member list40e2ac06ca1674a7, started, etcd3, http://192.168.202.130:2380, http://192.168.202.130:2379, falsec532c5cedfe84d3c, started, etcd1, http://192.168.202.128:2380, http://192.168.202.128:2379, falsedb75d3022049742a, started, etcd2, http://192.168.202.129:2380, http://192.168.202.129:2379, false
结果符合预期,再看下节点的健康状态:
$ /opt/etcd/bin/etcdctl --endpoints="http://192.168.202.128:2379,http://192.168.202.129:2379,http://192.168.202.130:2379" endpoint health # 结果如下http://192.168.202.128:2379 is healthy: successfully committed proposal: took = 3.157068mshttp://192.168.202.130:2379 is healthy: successfully committed proposal: took = 3.300984mshttp://192.168.202.129:2379 is healthy: successfully committed proposal: took = 3.263923ms
可以看到,集群中的三个节点都是健康的正常状态。以动态发现方式启动集群成功。
上面是使用公共服务来做服务发现的,如果我们有自己搭建好的etcd,可以使用自建的etcd作为服务发现,搭建集群:
获取令牌时,必须指定群集大小。 发现服务使用该大小来了解何时发现了最初将组成集群的所有成员。
curl -X PUT http://10.0.10.10:2379/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83/_config/size -d value=3
我们需要把该 url 地址 http://10.0.10.10:2379/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83 作为 --discovery
参数来启动 etcd。
节点会自动使用 http://10.0.10.10:2379/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83 目录进行 etcd 的注册和发现服务。
参考链接:bilibili视频教程
彻底搞懂 etcd 系列文章(三):etcd 集群运维部署
搭建 etcd 集群--使用到了 tls
使用 StatefulSet 部署 etcd 集群
关键词:
2、etcd单机部署和集群部署
网友逛鱼店惊喜偶遇鲨鱼产子过程:第一次见 很神奇
深圳一公司发布年薪50万岗位:优先录用李一桐粉丝
7人吃自助炫300多个螃蟹 医生:过量食用螃蟹或引发多种疾病|世界时讯
苹果别对iPhone 15 USB-C限速!不然欧盟不答应
加快摆脱中国供应链?库克:苹果接下来就靠印度了
什么是成本性态 什么是成本|世界热讯
爱成都迎大运宣传稿怎么画(爱成都迎大运宣传句)
咖啡色地板配什么颜色家具_咖啡色配什么颜色好看
网站被攻击了!!! 速递
老人推倒摩托车案执行款1.6万已到账 车主10个月维权结束:老人违法不该被宽恕
天天百事通!民呼我应|东门一市政路被“霸占”,官方回应来了
【环球新要闻】月嫂拍嗝时打盹致婴儿头顶骨骨折 平台:愿退还未完成的服务费
“挖呀挖呀挖”童谣为何火爆全网?专家解释原因_天天速看
全球今日报丨冷冻小龙虾怎么加热 冷冻小龙虾怎么加热才好吃
美股银行股周五为何大涨?没有空头想持仓过周末
天天速讯:中国特供 NVIDIA缩水版A800显卡遭哄抢:10万元也难买到
“投资界的春晚”要来了:巴菲特股东大会五大看点_世界微动态
老黄良心了 5000块的4060游戏本值得买吗?结论来了
复数的基本知识
最新快讯!关于学生五一前请假遭拒强行离校被处分及学生五一前请假遭拒强行离校被处分详情
广东小区业主私拆承重墙 多户搬离墙体开裂到14楼:网友吐槽是谋杀 希望严惩
5月价格继续涨 LCD面板不再亏本卖:75寸电视不到3000元
快播:“土味”出圈!济宁“90后”唢呐女博士背后的故事
最新消息:SQL 解析在 CloudQuery 中的应用
小红书布局AI大模型:上线AI绘画应用
旅客问路被工作人员怼回去多读书 车站回应:严肃处理|环球微速讯
天天视讯!航拍安徽岳西茭白田:满眼葱绿孕育生机
世界热点评!C#高级编程--反射与特性
88年后入土为安 云南禄劝隆重安葬21具红军烈士遗骸
新消息丨厂商为何要封杀32位APP?真实原因揭开
比商超便宜一半多!伊利巧乐兹大促:券后每支2.4元起
3090 Ti能抵7200元 iGame以旧换新7日开启:RTX 40显卡这下真的便宜了 天天视讯
焦点快播:1049元 创维推出新款23.8电竞显示器:165Hz Fast IPS屏
每日聚焦:村里又来年轻人 发展动力更强劲
推荐6个我经常逛的“小网站”,嘿嘿嘿!!!
【全球播资讯】用Radare2模拟shellcode运行
全球时讯:数仓建模规范--非常全
Vue2的生命周期 每日速递
美国制裁升级,推动国产化网卡发展刻不容缓
重磅!“听音写稿”成真 讯飞听见重大升级:一段录音 一键成稿 今热点
热资讯!菜鸟驿站爆改大征集:夜间自助取件 这5个城市方便了
国产AI逆袭!一图看懂讯飞星火:文本生成、知识问答、数学三大能力已超越ChatGPT
理想汽车五一出行报告出炉:行程1.44亿公里、一半都在烧油
世界聚焦:山东黄金董事长李航:预计金价仍有进一步上涨空间
新消息丨前端开发环境搭建踩坑笔记——npm install node-sass安装失败的解决方案
C/C++代码内捕获异常发生时的调用栈
天天即时看!如何通过代码接入手机在网状态 API
不一样的设计模式——— 重新理解6大原则[外篇]
今日视点:首座深远海浮式风电平台完成海上安装
头条:男孩掉入黄河被救 家长抬羊登门拜谢 网友:知恩图报的正确打开方式
遥遥领先!讯飞星火认知大模型可自动创作 生成虚拟人朗读-每日消息
《银河护卫队3》上映2天票房破7000万 豆瓣评分高达8.7-天天热头条
18.98万起售 曝比亚迪海豹冠军版接受预定:比现款便宜多了
天天速读:科大讯飞刘庆峰:讯飞星火大模型中文能力已经超过ChatGPT
Idea编译:Java找不到符号(终极解决方案篇)_天天要闻
分布式场景下,如何对外提供易变的服务,打造可靠的注册中心?
每日消息!涨知识!你不知道的中国手机号码的编码和划分规则
汽车的供电状态
江阴枪击案嫌犯或已跟踪受害人半年具体是什么情况
哨兵模式立大功 理想L9遭遇奥迪“开门杀”:清清楚楚拍下全过程
天天动态:1.6亿赔款谁来出?承重墙被砸现高楼内仍有人居住 网友称楼体扭曲变形
国产最强AI来了!讯飞星火认知大模型发布:中文超越ChatGPT 英文已接近
要闻:传比亚迪电池配套欧版特斯拉 官方:不予置评
当前区块链研究领域的前沿技术和研究方向
快克智能(603203):短期承压不改趋势 半导体业务落地打开新空间|环球讯息
全球报道:没有金刚钻别揽瓷器活 特斯拉Model Y涉水越野:“脸”都烂了
同比猛涨128% 奇瑞4月销量出炉:狂卖12.7万辆站稳自主第一梯队 天天快播报
环球热头条丨AIGPT中文版(无需魔法)最简单的方式实现AI绘画
当前聚焦:热门的免费 API 合辑整理
.NET几种微服务框架,你用过吗?
热点聚焦:两个系统之间跳转免密登录
承重墙被砸1.6亿赔款谁来出? 法律人士:租户、施工队责任重大
中国电子云成为政企信创促进中心首批成员单位
科济药业AB011联合用药一线治疗胃癌获批临床 全球热文
梦幻西游检查更新失败是什么原因?梦幻西游检查更新失败怎么解决?
美剧《西游ABC》新海报发布:杨紫琼观音、吴彦祖美猴王下凡_世界资讯
男子花32万买二手奔驰获赔98万:车商隐瞒是泡水报废车
戴尔xps13怎么增加固态硬盘?戴尔xps13笔记本参数
富士宝电磁炉质量怎么样?富士宝电磁炉故障大全
多玩盒子是什么时候出的?多玩盒子怎么卸载?
索尼投影机灯泡时间怎么清零?索尼投影机驱动怎么安装?
教师节是中国的还是国际的?教师节为什么定在9月10号?
天天亮点!手机内存卡怎么加密码_手机内存卡怎么加密
旷亮无比的意思是什么?旷亮无比的天空仿写三个词语
林书豪现在在哪个球队?林书豪的父母简介
生肖是按农历还是阳历计算的?96属鼠跟什么属相更配?正确的属相划分时间是什么?
什么是文创产品?文创产品的功能有哪些?文创发展趋势是什么?
一文详解如何在 ChengYing 中通过产品线部署一键提升效率-每日热门
今日快看!存货、负债、坏账持增 经营现金流量净额转负 宏工科技能过会么
特斯拉索赔500万名誉维权案将开庭 被告方为“刹车失灵”车主张女士:积极应诉 每日热议
达人契约能增加多少伤害(达人契约)
MYSQL数据库基础--MySQL子查询怎么操作?_世界百事通
易基因:2023年植物表观转录组研究的最新进展(m6A+m5C)|深度综述
32位进程设置大地址(3G)空间-世界滚动
Unix教程_编程入门自学教程_菜鸟教程-免费教程分享 最新消息
讯息:抖音芭比q是什么意思梗_网络语芭比q是什么意思
天天实时:5月26上映!迪士尼发真人版《小美人鱼》极清剧照:黑小美人鱼好看吗?
德国进口:Knoppers榛子巧克力威化饼干29.9元/13包|环球热闻
漫威回归内地首作!《黑豹2》今日上线网播:“优爱腾”同步上线