- 浏览: 2546143 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
http://liuyu.blog.51cto.com/183345/305145
活动链接:http://51ctoblog.blog.51cto.com/26414/300667
原架构存在的弊端:
1、 负载均衡器存在单点故障
2、 缺少入侵检测系统
3、 缺少用户操作记录系统
4、 数据库和前端没有用路由隔离
5、 缺少管理员管理设备(vpn)
调整后的架构图:
说明:
1、 使用Nginx+keepalved实现负载均衡,解决单点与高流量并发问题
2、 数据与前端隔离,增强安全性。
3、 数据库负载,memcached缓清数据库压力。
4、 管理者用VPN管理所有设备。监控实时报警。
注:本文只写前端负载、数据库负载、VPN部署过程。及详解。忽略memcache与监控
本文出自:守住每一天 http://liuyu.blog.51cto.com/183345/305145
一、 Nginx+keepalved实现负载均衡
WHY? 为什么用Nginx而不用LVS?
7点理由足以说明一切:
1 、高并发连接: 官方测试能够支撑 5 万并发连接,在实际生产环境中跑到 2 ~ 3 万并发连接数。
2 、内存消耗少: 在 3 万并发连接下,开启的 10 个 Nginx 进程才消耗 150M 内存( 15M*10=150M )。
3 、配置文件非常简单: 风格跟程序一样通俗易懂。
4 、成本低廉: Nginx 为开源软件,可以免费使用。而购买 F5 BIG-IP 、 NetScaler 等硬件负载均衡交换机则需要十多万至几十万人民币。
• 使用 Nginx 做七层负载均衡的理由
5 、支持 Rewrite 重写规则: 能够根据域名、 URL 的不同,将 HTTP 请求分到不同的后端服务器群组。
6 、内置的健康检查功能: 如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。
7 、节省带宽: 支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
进一步说明:
Keepalived是Linux下面实现VRRP 备份路由的高可靠性运行件。基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障时IP瞬间无缝交接。
Nginx是基于Linux 2.6内核中epoll模型http服务器,与Apache进程派生模式不同的是Nginx进程基于于Master+Slave多进程模型,自身具有非常 稳定的子进程管理功能。在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠 性,Slave进程所有的业务信号都由主进程发出,Slave进程所有的超时任务都会被Master中止,属于非阻塞式任务模型。
服务器IP存活检测是由Keepalived自己本身完成的,将2台服务器配置成Keepalived互为主辅关系,任意一方机器故障对方都能够将IP接 管过去。
Keepalived的服务IP通过其配置文件进行管理,依靠其自身的进程去确定服务器的存活状态,如果在需要对服务器进程在线维护的情况下,只需要停掉 被维护机器的Keepalived服务进程,另外一台服务器就能够接管该台服务器的所有应用。
本文出自:守住每一天 http://liuyu.blog.51cto.com/183345/305145
快速配置方法:
A、环境:
centos5.3、nginx-0.7.51、keepalived-1.1.19
主nginx负载均衡器:192.168.0.154
辅nginx负载均衡器:192.168.9.155
vip:192.168.0.188
B、安装keepalived
#tar zxvf keepalived-1.1.19.tar.gz
#cd keepalived-1.1.19
#./configure --prefix=/usr/local/keepalived
#make
#make install
#cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
#mkdir /etc/keepalived
#cd /etc/keepalived/
vim keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
51cto@51cto.com
}
notification_email_from keepalived@chtopnet.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
mcast_src_ip 192.168.0.155 <==辅nginx的IP地址
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass chtopnet
}
virtual_ipaddress {
192.168.0.188 <==VIP地址
}
}
#service keepalived start
辅机的配置文件:
! Configuration File for keepalived
global_defs {
notification_email {
51cto@51cto.com
}
notification_email_from keepalived@chtopnet.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
mcast_src_ip 192.168.0.154 <==主nginx的IP的地址
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass chtopnet
}
virtual_ipaddress {
192.168.0.188
}
}
检查其配置: ip a
测试:停主看辅是否接管
本文出自:守住每一天 http://liuyu.blog.51cto.com/183345/305145
优化及安全配置:
iptables 只开启80对外,SSH只允许内网连接
Iptables –t filter –A RH-Firewall-1-INPUT –s 192.168.1.0/24 –p tcp –dport 22 –j ACCEPT
Iptables –t filter -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
#防SYN
防止同步包洪水(Sync Flood)
# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
也有人写作
#iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
--limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改
#防止各种端口扫描
# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
Ping洪水攻击(Ping of Death)
# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#修改sysctl.conf
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
打开SYN COOKIE功能:
sysctl -w net.ipv4.tcp_syncookies=1
降低重试次数:
sysctl -w net.ipv4.tcp_synack_retries=3 sysctl -w net.ipv4.tcp_syn_retries=3
配置Chkrootkit 轻量级别入侵检测。
参考:http://www.centospub.com/make/chkrootkit.html
本文出自:守住每一天 http://liuyu.blog.51cto.com/183345/305145
二、 数据库cluster 配置
这里写MASTER/SLAVE配置方法:
更为好的负载方案参考我的BLOG:
mysql+mmm+proxy实现mysql读写分离及HA
http://liuyu.blog.51cto.com/183345/98867
A、环境
主服务器IP为:10.0.0.2
从服务器IP为:10.0.0.3
B、主从配置:
主
[mysqld]
log-bin=mysql-bin
server-id=1
从
[mysqld]
log-bin=mysql-bin
server-id=2
C、建立同步账号,锁表,建立快照
GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
FLUSH TABLES WITH READ LOCK;
tar -cvf /tmp/mysql-snapshot.tar ./data
D、记下POST值
mysql > SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
E、解锁、COPY文件
UNLOCK TABLES;
# scp /tmp/mysql-snapshot.tar root@10.0.0.3:/root
F、启动,查看状态
mysql> show slave status\G
会得到类似下面的列表:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
启动同步:mysql> start slave;
本文出自:守住每一天 http://liuyu.blog.51cto.com/183345/305145
三、 VPN部署
A,基本安装
1.1相关软件包:
http://openvpn.net/
Lzo-1.08.targz
Openvpn-2.09.tar.gz
openssl
1.2具体安装
# cd /root
# tar zxvf lzo-1.08.tar.gz
# cd lzo-1.08
# ./configure
# make && make install
# cd /root
# tar zxvf openvpn-2.0_beta7.tar.gz
# cd openvpn-2.0
# ./configure --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib
# make
#cp –Rf openvpn-2.0 /etc/openvpn
B,网络配置
网络规划:
vpn使用路由模式还是网桥模式
建议使用路由模式. 私有子网网段的规划
建立VPN往往会把各个地方的私有子网网段连接在一起.
互联网IP地址分配机构(IANA)已经保留了以下3个网段为私有子网网段所用(RFC 1918):
10.0.0.0 10.255.255.255 (10/8 prefix)
172.16.0.0 172.31.255.255 (172.16/12 prefix)
192.168.0.0 192.168.255.255 (192.168/16 prefix)
C,具体配置
3.1创建证书配置文件:
下面是linux/bsd/unix系统建立PKI:
#cd /etc/openvpn/easy-rsa
#vi vars
export KEY_COUNTRY=CN
export KEY_PROVINCE=BJ
export KEY_CITY=Bj
export KEY_ORG="xxxx"
export KEY_EMAIL=liuyu@151cto.com
#. ./vars (注意. .之间有空格)
#./clean-all
#./build-ca
最后的命令build-ca将认证CA证书,这些密匙跟openssl紧密结合.
3.2建立服务器的认证书和密匙:
#./build-key-server server
3.3建立客户端证书:
#./build-key client1
#./build-key client2
#./build-key client3
如果你想保护你的客户端密匙,请运行build-key-pass脚本.
为了区分每个客户端,必须用适当的名称命名”Common Name”, 比如. "client1", "client2", or "client3". 通常是为每个客户端指定唯一的”common name”.
3.4创建Diffie Hellman参数:
openvpn服务必须创建Diffe Hellman:
#./build-dh
#cd /etc/openvpn
#mkdir conf keys
#cd easy-rsa/keys
3.5拷贝证书相关的文件:
#cp ca.crt /etc/openvpn/keys
#cp server.crt /etc/openvpn/keys
#cp server.key /etc/openvpn/keys
#cp dh1024.pem /etc/openvpn/keys
3.6配置服务端:
#cd sample-config-files/
#cp server.conf /etc/openvpn/conf/
#cd /etc/openvpn/conf
#cp server.conf server.conf.liuyu
#vi server.conf
---------------------------cut begin-----------------------------------------------------------
port 1194
proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key # This file should be kept secret
dh /etc/openvpn/keys/dh1024.pem
server 172.16.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 172.16.0.0 255.255.255.0"
push "route 172.16.0.0 255.255.255.0"
client-config-dir /etc/openvpn/ccd
route 172.16.0.0 255.255.255.0
client-to-client
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
plugin /etc/openvpn/plugin/simple.so
-------------------------------cut end------------------------------------------------
3.7启动服务端openvpn
#mkdir ccd
#cd ccd
#vi lin
ifconfig-push 172.16.0.6 172.16.0.7
#./openvpn --config conf/server.conf
3.8配置client端:
#cd /etc/openvpn
#mkdir conf
#cd sample-config-files/
#grep –v “^#” client.conf > 1.conf
#cp 1.conf /etc/openvpn/conf/client.conf
#cd ../
#vi conf/client.conf
-------------------------------------cut begin-----------------------------------------------
client
;dev tap
dev tun
;dev-node MyTap
proto tcp
;proto udp
remote 192.168.13.211 1194
;remote my-server-2 1194
;remote-random
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
;mute-replay-warnings
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/lin.crt
key /etc/openvpn/keys/lin.key
;ns-cert-type server
;tls-auth ta.key 1
;cipher x
comp-lzo
verb 3
--------------------------------cut end---------------------------------------------
3.9制作启动服务
#cd /etc/openvpn
#cd sample-scripts/
#cp openvpn.init /etc/rc.d/init.d/openvpn
#chkconfig –add openvpn
#cd /etc/openvpn/conf
#cp server.conf ../ //将配置文件拷贝到/etc/openvpn根目录下即可.
#service openvpn start 即可即动openvpn 服务.
客户端启动服务制作类似于服务器的上述过程.
本文出自:守住每一天 http://liuyu.blog.51cto.com/183345/305145
结束语:本文都是采用开源软件来加固架构的安全。并非购买商业性产品。当你的网站发展到一定的规模,可以采用商业性产品时。可以使用IDS,IPS,蜜罐等。
此方案还可以加上扫代码漏洞的软件就是帮你分析你的asp,jsp,java程序里面有没有漏洞等问题。
如有问题请与本人取得联系:
Liuyu105#gmail.com
Liuyu.blog.51cto.com
本文出自:守住每一天 http://liuyu.blog.51cto.com/183345/305145
参考:
http://www.slideshare.net/Cary/nginx-presentation
http://www.linuxtone.org/html/27/t-3927.html
http://openvpn.net/index.php/open-source/documentation/howto.html
http://bbs.linuxtone.org/viewthread.php?tid=47&highlight=vpn
发表评论
-
haproxy 安装配置和负载实例
2015-03-27 11:49 11538一、环境说明实验环境 OS CentOS5.4 192.1 ... -
使用DNSPOD API实现域名动态解析
2015-03-17 11:13 13328http://www.williamsang.com/arc ... -
开发人员意识感悟
2014-10-30 16:02 01.将复杂的东西整理成 ... -
架构分布施工图
2012-04-17 14:37 1995架构分布施工图 ... -
juniper SSG550 防火墙
2011-11-11 13:47 1770VPN支持 基本 ... -
F5 BIG-IP
2011-11-11 13:43 3557http://wenku.baidu.com/vi ... -
[转]架构师必须补充的能力
2011-07-19 18:12 1635http://xiammy.blog.51cto.co ... -
PHP搭建百万级网站架构技术揭秘:Poppen.de德国社交
2011-06-16 11:25 2037在了解过世界最大的P ... -
19个心得 明明白白说Linux下的负载均衡
2011-03-10 19:49 2403一、目前网站架构一般分成负载均衡层、web层和数据库层,我其实 ... -
大型网站运维探讨和心得
2011-03-10 19:33 2698看到一篇不错的心得 ... -
百万级PHP网站架构工具箱
2011-03-01 18:21 1773在了解过世界最大的PHP站点,Facebook的后台技术后,今 ... -
非常推荐:搭建一个大型网站架构的实验环境(FreeBsd+Nginx+Squid+Apache)
2009-09-10 15:23 2162http://blog.chinaunix.net/u1/55 ... -
网站架构收集
2009-09-10 14:13 2166来自sudone.com 服务器系统架构分析日志 ... -
使用MPICH构建一个四节点的集群系统
2009-09-09 14:01 3174http://selboo.com.cn/post/202/ ... -
网站架构--来自BAIDU百科
2009-08-15 20:55 1771网站架构 一:硬架构 ... -
推荐:大型网站架构设计系列--某人的总结
2009-08-15 20:45 3144大型网站架构设计系列-我的总结如下: 1、 数据结构和产品架 ... -
门户网站运维abc
2009-08-11 15:45 2355http://bbs3.chinaunix.net/threa ... -
【转自phpchina】支付宝架构师对话腾讯研发总监
2009-07-29 17:35 2142王速瑜,腾讯 R&D研发总监,从事产品研发和管理工作, ... -
【转自phpchina】内网CTO黄晶谈架构演变
2009-07-29 17:34 1421这是一次公司内部的交流会,主题是校内的发展史和构架讲解,主讲人 ... -
web架构设计经验分享
2009-07-14 11:08 1735朱燚的技术博客,转 ...
相关推荐
资源名称:Oracle数据库教程 赵明渊 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
赵明在机器人行业拥有丰富的经验和独到的见解,他的创业故事和产品理念对于当前机器人技术的发展趋势提供了重要的参考。在文章中,我们可以提炼出以下几个重要的知识点: 1. 机器人技术的应用场景:文章中赵明让...
《Oracle数据库》是由赵明渊主编的一本深入探讨Oracle数据库系统的专业教材,它涵盖了Oracle数据库的基础知识、管理和优化等多个方面。这本书是学习Oracle数据库的重要参考资料,同时也为将Oracle数据库知识迁移到...
- **安全策略**:制定合理的安全策略,保护数据库免受未经授权的访问。 以上内容涵盖了《Oracle数据库教程(第2版)》中的核心知识点,这些知识点对于学习和掌握Oracle数据库的使用方法至关重要。
191401047-赵明.null
stada作业 赵明煊.do
赵明在其演讲中,详细阐述了人工智能在监控系统中的实践之路,场景落地,以及未来的思考和展望。 首先,赵明介绍了自身经验背景,具有10余年的平台监控开发经验,曾参与腾讯电商业务和中间件监控系统的开发,并于...
赵明等学者在2021年的研究中提出了一种混合特征分级算法,该算法旨在实现电力数据的自动化和智能化安全定级。 一、物联网技术在电力数据安全中的作用 物联网技术通过智能传感器实时采集电网数据,这些数据包括电能...
算法参考A novel strategy for signal denoising using reweighted SVD and its applications to weak fault feature enhancement of rotating machinery
【Oracle数据库基础】 ...综上所述,Oracle数据库提供了强大且灵活的数据管理解决方案,其丰富的功能和特性使其成为企业级应用的首选。理解和掌握这些基础知识对于使用和管理Oracle数据库至关重要。
根据荣耀总裁赵明的观点,只有配备了AI芯片的智能手机才能够称之为真正的AI手机。这一概念的提出强调了AI芯片在智能手机中扮演的核心角色,不仅在于处理能力的提升,更在于AI技术在日常使用中的实际应用和用户体验的...
2. 避障技术:为了在室内环境中安全高效地移动,机器人必须能够识别并避开障碍物。这通常通过传感器(如雷达、红外、超声波等)实现,再配合机器学习和深度学习算法,使机器人能够适应复杂的室内环境。 3. 物联通信...
相当不错的一本资料,通过例子来讲解,更加容易掌握
总的来说,这篇研究展示了word2vec和LSTM在饮食健康文本分类中的强大潜力,为文本信息处理提供了一个高效的解决方案,有助于人们更好地理解和利用网络上的健康饮食知识。这一工作也为后续的自然语言处理和信息检索...
Kubernetes有状态集群服务部署与管理
4. **未提及的宣传形式**:方案中提到未包括的宣传方式有下乡文艺演出、PPT宣传和专题片,其中PPT制作由罗重洲、汪少辉、赵明共同负责。 5. **时间安排**:宣传工作分为准备、制作和效应三个阶段,从2012年2月13日...
课后习题答案可供同学参考
- **安全性**: 云计算提供了可靠且安全的数据存储中心,保障了用户数据的安全。 - **成本效益**: 用户可以根据实际需求动态调整资源,降低了运营成本。 - **灵活性**: 用户可以通过互联网轻松访问所需的计算资源...
DBA的角色至关重要,因为他们确保了数据库的稳定运行和数据的安全性。 Oracle数据库的体系结构由物理结构和逻辑结构两部分组成。物理结构涉及数据文件、日志文件、控制文件和参数文件。数据文件是实际存储数据库...