第三部分:lnmp集群部署

承接上篇:http://linuxops.blog.51cto.com/2238445/899637
请参考本人的以下文章:
http://linuxops.blog.51cto.com/2238445/712035
http://linuxops.blog.51cto.com/2238445/701590
要说明的两点:
1.这里的web数据在通过后面要介绍的NFS挂载共享!
2.数据库与web是分开在不同服务器上!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
第四部分:mysql主从部署
mysql主从相对比较简单,不过多讲解!
1.主服务器和从服务器上安装的MySQL最好版本一致,从版本可以高于主.
mysql> select version();
+------------+
| version()  |
+------------+
| 5.5.12-log |
+------------+
1 row in set (0.00 sec)
我这里选择5.5.12!
2.在主服务器上为从服务器设置一个连接账户
mysql> grant replication slave,replication client on *.* to rep@"192.168.8.41" identified by "rep";
3. 执行FLUSH TABLES WITH READ LOCK 进行锁表
mysql> FLUSH TABLES WITH READ LOCK;
4. 让客户程序保持运行,发出FLUSH TABLES语句让读锁定保持有效。(如果退出客户程序,锁被释放)。进入主服务器的数据目录,然后执行命令:
在主上操作:
shell> tar zcf /tmp/mysql.tgz /data/mysql/data
shell> scp /tmp/mysql.tgz 192.168.8.41:/tmp/
在从上操作:
shell> tar zxf /tmp/mysql.tgz /data/mysql/data
注意:对于主服务器没有数据时没必须以是3和4步骤!
读取主服务器上当前的二进制日志名(File)和偏移量值(Position),并记录下来:
mysql> SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000011 |      349 |              |                  |
+---------------+----------+--------------+------------------+
1 row in set (0.03 sec)
取得快照并记录日志名和偏移量后(POS),可以在主服务器上重新启用写活动:
mysql> UNLOCK TABLES;
5. 确保主服务器主机上my.cnf文件的[mysqld]部分包括一个log_bin选项
[mysqld]  
log_bin=mysql-bin
server-id=1
6. 停止用于从服务器的服务器并在其my.cnf文件中添加下面的行:
[mysqld]  
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
server-id=2
7.如果对主服务器的数据进行二进制备份,启动从服务器之前将它复制到从服务器的数据目录中。
确保对这些文件和目录的权限正确。服务器 MySQL运行的用户必须能够读写文件,如同在主服务器上一样。
8. 用--skip-slave-start选项启动从服务器,以便它不立即尝试连接主服务器。(可选操作)
9. 在从服务器上执行下面的语句:
mysql>change master to MASTER_HOST='192.168.8.40', MASTER_USER='rep', MASTER_PASSWORD='rep', MASTER_LOG_FILE='binlog.000011', MASTER_LOG_POS=349;
9. 启动从服务器线程:
mysql> START SLAVE;
10.验证部署是否成功
mysql> SHOW slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.8.40
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000011
Read_Master_Log_Pos: 349
Relay_Log_File: relaylog.000002
Relay_Log_Pos: 250
Relay_Master_Log_File: binlog.000011
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB: mysql,test,information_schema
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 349
Relay_Log_Space: 399
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.03 sec)
当Slave_IO_Running和Slave_SQL_Running都显示Yes的时候,表示同步成功。
到此mysql主从同步配置完成!!!!!!!下面开开始相对来说比较复杂的nfs高可用架构!
到时再有必要再添加主从切换部署说明。。。。。。。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
第五部分:NFS高可用web存储部署
一.环境介绍
nfs1 eth0:192.168.8.60  eth1:192.168.125.60   ---作为主服务器
nfs2 eth0:192.168.8.61  eth1:192.168.125.61   ---作为从服务器
虚拟IP 192.168.8.62   ---通过Heartbeat来实现,对外提供服务的IP
两台服务器将 /dev/sda5 作为镜像
1.同步时钟(实践证明这个不同步关系不大,但是做下这步也无防)
[root@nfs1 ~]# ntpdate ntp.api.bz
2.设置hosts相互解析
在 /etc/hosts 文件中加入如下内容:
192.168.8.60nfs1
192.168.8.61nfs2
二.drbd安装配置
1.drbd安装
源码安装:
[root@nfs1 ~]# tar zxf drbd-8.3.5.tar.gz
[root@nfs1 ~]# cd drbd-8.3.5
[root@nfs1 ~]# make
[root@nfs1 ~]# make install
yum 安装:
[root@nfs1 ~]# yum -y install drbd83 kmod-drbd83
2.加载模块
[root@nfs1 ~]# modprobe drbd
[root@nfs1 ~]# lsmod |grep drbd
drbd                  300440  0
3.drbd配置
[root@nfs1 ~]# mv /etc/drbd.conf /etc/drbd.conf.bak
[root@nfs1 ~]# vi /etc/drbd.conf
加入如下内容:
  1. global {

  2. usage-count yes;

  3. }

  4. common {

  5. syncer { rate 100M; }

  6. }

  7. resource r0 {

  8. protocol C;

  9. startup { wfc-timeout 0; degr-wfc-timeout 120; }

  10. disk { on-io-error detach; }

  11. net {

  12. timeout 60;

  13. connect-int 10;

  14. ping-int 10;

  15. max-buffers 2048;

  16. max-epoch-size 2048;

  17. }

  18. syncer { rate 30M; }

  19. on nfs1 {

  20. device    /dev/drbd0;

  21. disk      /dev/sda5;

  22. address   192.168.8.60:7788;

  23. meta-disk internal;

  24. }

  25. on nfs2 {

  26. device    /dev/drbd0;

  27. disk      /dev/sda5;

  28. address   192.168.8.61:7788;

  29. meta-disk internal;

  30. }

  31. }

4.创建资源
同于在我的实验环境中我之前的/dev/sda5在安装系统时创建的文件系统,因此这里要破坏文件系统(如果是新增的硬盘,此步可省略)。
[root@nfs1 ~]# dd if=/dev/zero bs=1M count=1 of=/dev/sda5;sync;sync
1).创建一个名为ro的资源
[root@nfs1 ~]# drbdadm create-md r0
--==  Thank you for participating in the global usage survey  ==--
The server's response is:
you are the 1724th user to install this version
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
success
2).启动drbd服务
[root@nfs1 ~]# service drbd start
随系统开机系统
[root@nfs1 ~]# chkconfig drbd on
以上操作同时在主备上操作!!!!!!!!!!!!!!!!!!!
启动好各节点drbd服务后,查看各节点的状态:
[root@nfs1 ~]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:5236960
[root@nfs2 ~]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:5236960
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
以下操作在nfs1主上操作
5.指定主节点
[root@nfs1 ~]# drbdsetup /dev/drbd0 primary -o
[root@nfs1 ~]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:170152 nr:0 dw:0 dr:173696 al:0 bm:9 lo:11 pe:69 ua:39 ap:0 ep:1 wo:b oos:5075552
[>....................] sync'ed:  3.2% (4956/5112)M
finish: 0:03:08 speed: 26,900 (26,900) K/sec
[root@nfs2 ~]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C r-----
ns:0 nr:514560 dw:513664 dr:0 al:0 bm:31 lo:8 pe:708 ua:7 ap:0 ep:1 wo:b oos:4723296
[>...................] sync'ed:  9.9% (4612/5112)M
finish: 0:04:41 speed: 16,768 (19,024) want: 30,720 K/sec
可以看到主从之间正在传输数据,稍等片刻就会同步完成!
同步完成之后会是如下形式:
[root@nfs1 ~]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r---n-
ns:5451880 nr:0 dw:214920 dr:5237008 al:73 bm:320 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
[root@nfs2 ~]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
ns:0 nr:5451880 dw:5451880 dr:0 al:0 bm:320 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
在主节点格式化 /dev/drbd0 分区(从节点不用)
[root@nfs1 ~]# mkfs.ext3 /dev/drbd0
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
655360 inodes, 1309240 blocks
65462 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
在主节点上挂载分区(从节点不用)
[root@nfs1 ~]# mkdir /data
[root@nfs1 ~]# mount /dev/drbd0 /data
[root@nfs1 ~]# mount |grep drbd
/dev/drbd0 on /data type ext3 (rw)
三.NFS配置(主从节点操作一样)
一般系统默认就安装好NFS服务
如果没有安装可以通过yum进行安装:yum -y install portmap nfs
1.修改 NFS 配置文件
[root@nfs1 ~]# cat /etc/exports
/data *(rw,sync,insecure,no_root_squash,no_wdelay)
2.启动NFS
[root@nfs1 ~]# service portmap start
Starting portmap:                                          [  OK  ]
[root@nfs1 ~]# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]
[root@nfs1 ~]# chkconfig portmap on
[root@nfs1 ~]# chkconfig nfs on
注意:要先启动portmap 再启动nfs!
四.heartbeat安装配置
1.heartbeat安装
源码安装:
tar zxf libnet-1.1.5.tar.gz
cd libnet-1.1.5
./configure
make;make install
tar jxf Heartbeat-2-1-STABLE-2.1.4.tar.bz2
cd Heartbeat-2-1-STABLE-2.1.4
./ConfigureMe configure
make;make install
yum安装:
[root@nfs1 ~]# yum -y install libnet heartbeat-devel heartbeat-ldirectord heartbeat
这里比较奇怪:heartbeat这个包要yum两次!!!第一次貌似没有安装上
2.创建配置文件
[root@nfs1 ~]# cd /etc/ha.d
创建主配置文件,主从之前有一处不同,文件中有说明
[root@nfs1 ha.d]# vi ha.cf
加入如下内容:
  1. logfile /var/log/ha.log

  2. debugfile /var/log/ha-debug

  3. logfacility     local0

  4. keepalive 2

  5. deadtime 10

  6. warntime 10

  7. initdead 10

  8. ucast eth1 192.168.52.61    #这里要指定对方从服务器eth1接口 IP,主从之间相互指定对方IP

  9. auto_failback off

  10. node nfs1

  11. node nfs2

创建hertbeat认证文件authkeys,主从配置相同!
[root@nfs1 ha.d]# vi authkeys
加入如下内容:
auth 1
1 crc
权限给600
[root@nfs1 ha.d]# chmod 600 /etc/ha.d/authkeys
创建集群资源文件 haresources,主从必须相同~!
[root@nfs1 ha.d]# vi haresources
加入如下内容:
nfs1 IPaddr::192.168.8.62/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 killnfsd
注意:这里的IPaddr 指定为虚拟IP的地址
3.创建kilnfsd脚本,主从相同!
这个脚本的功能就是重启nfs服务!这是因为NFS服务切换后,必须重新mount一下nfs共享出来的目录,否则会出现stale NFS file handle的错误!
[root@nfs1 ha.d]# vi /etc/ha.d/resource.d/killnfsd
加入如下内容:
killall -9 nfsd; /etc/init.d/nfs restart; exit 0
[root@nfs1 ha.d]# chmod 755 /etc/ha.d/resource.d/killnfsd
4.主从分别启动 nfs和heartbeat
[root@nfs1 ha.d]# service heartbeat start
Starting High-Availability services:
2012/06/09_10:27:43 INFO:  Resource is stopped
[  OK  ]
[root@nfs1 ha.d]# chkconfig heartbeat on
先启动主节点,再启动从节点!
整个环境运行OK后,首先来个简单测试(模拟主节点出现故障,导致服务停掉):
在做这个简单测试前看下当前的整个状态!
主节点:
[root@nfs1 ha.d]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:37912 nr:24 dw:37912 dr:219 al:12 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
[root@nfs1 ha.d]# mount |grep drbd0
/dev/drbd0 on /data type ext3 (rw)
[root@nfs1 ha.d]# ls /data/
anaconda-ks.cfg  install.log         lost+found                      nohup.out  sys_init.sh
init.sh          install.log.syslog  mongodb-linux-x86_64-2.0.5.tgz  sedcU4gy2
[root@nfs1 ha.d]# ip a |grep eth0:0
inet 192.168.8.62/24 brd 192.168.8.255 scope global secondary eth0:0
从节点:
[root@nfs2 ha.d]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
ns:24 nr:37928 dw:37988 dr:144 al:1 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
[root@nfs2 ha.d]# service heartbeat status
heartbeat OK [pid 7323 et al] is running on nfs2 [nfs2]...
我们现在把主节点heartbeat服务停掉:
[root@nfs1 ha.d]# service heartbeat stop
Stopping High-Availability services:
[  OK  ]
我们再到从服务器上查看一下有没有抢到虚拟VIP
[root@nfs2 ha.d]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:fc:78:8f brd ff:ff:ff:ff:ff:ff
inet 192.168.8.61/24 brd 192.168.8.255 scope global eth0
inet 192.168.8.62/24 brd 192.168.8.255 scope global secondary eth0:0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:fc:78:99 brd ff:ff:ff:ff:ff:ff
inet 192.168.52.61/24 brd 192.168.52.255 scope global eth1
[root@nfs2 ha.d]# mount |grep drbd0
/dev/drbd0 on /data type ext3 (rw)
[root@nfs2 ha.d]# ll /data/
total 37752
-rw------- 1 root root     1024 Jun 15 10:56 anaconda-ks.cfg
-rwxr-xr-x 1 root root     4535 Jun 15 10:56 init.sh
-rw-r--r-- 1 root root    30393 Jun 15 10:56 install.log
-rw-r--r-- 1 root root     4069 Jun 15 10:56 install.log.syslog
drwx------ 2 root root    16384 Jun 15 09:41 lost+found
-rw-r--r-- 1 root root 38527793 Jun 15 10:56 mongodb-linux-x86_64-2.0.5.tgz
-rw------- 1 root root     2189 Jun 15 10:56 nohup.out
-rw-r--r-- 1 root root      101 Jun 15 10:56 sedcU4gy2
-rw-r--r-- 1 root root     4714 Jun 15 10:56 sys_init.sh
可以看虚拟VIP已经切换过来,同时NFS也自己挂载上,数据也OK!!
发现整个主从节点之间的切换速度还是非常快的,大概在3秒左右!!
如果主节点由于硬件损坏,需要将Secondary提生成Primay主机,处理方法如下:
在primaty主机上,先要卸载掉DRBD设备.
[root@nfs1 /]# umount /dev/drbd0
将主机降级为”备机”
[root@nfs1 /]# drbdadm secondary r0  
[root@nfs1 /]# cat /proc/drbd  
1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r—
.......略
.......略
现在,两台主机都是”备机”.
在备机nfs2上, 将它升级为”主机”.
[root@nfs2 /]# drbdadm primary r0  
[root@nfs2 /]# cat /proc/drbd  
1: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r—
.......略
.......略
现在nfs2成为主机了.
当主节点状态变成 primary/unknow 从节点此时是 secondary/unknow 时,可以采用以下步骤进行解决:
1.从节点操作: drbdadm -- --discard-my-data connect all
2.主节点操作: drbdadm connnect all
基本以上两步就OK了!
至于drbd出现脑裂可以通过相应脚本,也可以手动恢复,但是推荐手动恢复!一般出现这种问题的机率是比较低的!
手动恢复脑裂问题:
在secondary上:
drbdadm secondary r0  
drbdadm disconnect all  
drbdadmin -- --discard-my-data connect r0
在primary上:
drbdadm disconnect all  
drbdadm connect r0
但是网上说在drbd.conf配置文件中加入以下参数,能解决split brain(脑裂)问题!此时主从之间是双向同步。。。
net {
after-sb-0pri discard-older-primary;
after-sb-lpri call-pri-lost-after-sb;
after-sb-2pri call-pri-lost-after-sb;
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
欢迎大家来拍砖。。参阅完。。。要记得评论哈!!让大家共同学习交流!

转载于:https://blog.51cto.com/opsmysql/899652

【APP Web架构】企业web高可用集群实战之haproxy篇续(二)相关推荐

  1. Haproxy+keepalived高可用集群实战

    前言 随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS.Haproxy.Nginx等,各方面性能不亚于硬件负载均衡F5,Haproxy提供高可用性.负载均衡以及基于TCP ...

  2. keepalived高可用集群实战项目

    keepalived高可用集群实战项目 需要准备17台虚拟机 目录 客户端 路由器 powerDNS 防火墙 时间同步服务器 keepalived + LVS集群实现web服务高可用 配置web_A与 ...

  3. heartbeat+DRBD+mysql高可用集群实战

      heartbeat+DRBD+mysql高可用集群实战 四台主机 主机名                 IP地址             用途 dbm128                    ...

  4. Kafka基于Zookeeper搭建高可用集群实战

    Kafka基于Zookeeper搭建高可用集群实战 1 前言 1.1 高可用的由来 为何需要Replication? 在Kafka在0.8以前的版本中,是没有Replication的,一旦某一个Bro ...

  5. linuxweb集群mysql_企业web高可用集群实战之lvs+keepalived+mysql

    前端用两台server做lvs+keepalived负载调度器,中间用apache+php作为web应用服务器,后端用两台做mysql高可用,用nfs.mfs或作为web文件共享服务器 系统环境: L ...

  6. haproxy负载均衡_Haproxy+keepalived高可用集群实战

    随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS.Haproxy.Nginx等,各方面性能不亚于硬件负载均衡F5,Haproxy提供高可用性.负载均衡以及基于TCP和HT ...

  7. Kubeadm安装k8s高可用集群实战

    请不要使用带中文的服务器和克隆的虚拟机! 文档中的IP地址请统一替换,不要一个一个替换! 一.集群安装网段划分 集群安装时会涉及到三个网段: 宿主机网段:就是安装k8s的服务器 Pod网段:k8s P ...

  8. K8S学习-高可用集群-多Master节点安装(二)

    kubernetes-2022.03.08 更新 在希腊语中意思是船长或领航员 在容器技术之前,物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况, 结果可能导致其他应用程序的 ...

  9. Java SaaS高可用集群架构与微服务架构分析

    可能大部分读者都在想,为什么在这以 dubbo.spring cloud 为代表的微服务时代,我要还要整理这种已经 "过时" 高可用集群架构? 本人工作上大部分团队都是 7-15 ...

最新文章

  1. 以系统时间命名文件方法(C++)
  2. 简单算法题:leetcode-2 两数相加
  3. 鼓浪屿天气预报软件测试,厦门鼓浪屿天气预报15天
  4. 最新linux面试题
  5. Android sdk Drow9patch使用
  6. 电脑音响怎么插_厦门靓车港丰田凯美瑞汽车音响改装德国HELIX汽车音响|凯美瑞|音响改装|汽车|内饰...
  7. 项目常用第三方库 Swift版
  8. vaOJ10369 - Arctic Network
  9. 商务宽屏视频剪辑企业网站模板
  10. 【刷算法】对称的二叉树
  11. cmd常用命令 cmd打开文件软件等
  12. 如何判断是否是ssd硬盘?win10查看固态硬盘的方法
  13. 向Oracle表中的添加数据
  14. Mysql索引原理整理
  15. 最高法规定网络转载涉嫌侵权需担责 10月10日起施行
  16. spark开发及调优
  17. 【图像识别】【读论文】纸币图像特征提取和识别问题
  18. java留言系统_JAVA留言板系统.doc
  19. O奖得主也收藏的6大美赛数据库网站
  20. linux下MongoDB客户端shell基本操作

热门文章

  1. Eclipse之实用快捷键
  2. java数组之binarySearch查找
  3. ASP.NET MVC 重写RazorViewEngine实现多主题切换
  4. SignalR集成Autofac
  5. Shell第三篇:基本语法
  6. javascript笔记——cookie解析
  7. 【Cson原创】javascript中length属性的探索
  8. Nutch中MapReduce的分析[zz]
  9. .net面试题大全,绝大部分面试题(有答案)
  10. 寻找正反物质世界边境的长城---兵粒子