在如今公有云大行其道的时代,有些个别的行业或企业出于对安全方便的考虑,希望控制服务器的管理权限,也是存在对私有云的需求。这篇文章主要是介绍了我在某企业内部搭建私有云的具体实践步骤。由于我们的整个架构比较简单,没有涉及到双活,大数据这些复杂的结构,只是简单的实现网站发布和后台数据交互的需求,所以对其他不同业务可能借鉴意义不大,仅供参考。对于我自己来说,这个我第一个完整的搭建平台的项目,希望记录下过程,方便日后参考,也喜欢以后的自己不要嘲笑现在技术薄弱的我,"呵呵,这样也算是私有云"........ 好吧,言归正传,踏实积累。


简单的描述一下整个框架的技术,负载均衡和反向代理我们用的是nginx,前端H5我们使用的Node.js技术,后端API接口我们用的是Tomcat发布,之后资源池,我们用mysql做数据库,mongodb存储日志,tomcat发布资源文件API接口,总线也用tomcat来发布。以下目录是我方(私有云技术提供方)和对方(使用私有云技术的企业)所要准备的资源。


搭建私有云,我方需准备资源如下

1. 软件:

-  nginx安装包(nginx-1.7.4.tar.gz)  

-  nodejs安装包(node-v6.1.0-linux-x64.tar.gz

-  tomcat安装包(apache-tomcat-8.0.5.tar.gz

-  mysql安装包(mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz

-  jdk安装包(jdk-8u45-linux-x64.gz

-  open-falcon监控客户端安装包(agent.tar.gz

 

2. 配置文件

-  nginx配置文件(nginx.conf

 

3. 发布脚本

-  API后端服务器一键发布脚本

-  API后端服务器全开/关脚本

-  API后端服务器一键测心跳脚本

-  H5前端服务器一键发布脚本

 

 

对方企业需准备资源如下

1. 9台装有Centos7系统的服务器(1nginx服务器,1H5服务器,1API高性能服务器,1台文件资源服务器,1mysql数据库服务器,1mongodb数据库服务器,1台总线服务器),并保证nginx服务器联通因特网,其他服务器之间相互联通。

2. 1个泛二级域名(客户端需要通过域名访问服务器)

3. CA数字签名认证的SSL证书(server.crt)(保证SSL安装连接,提升连接安装性)




注:电信需要提供到服务器集群的远程方式。各服务器操作系统由厂商提供,其余应用程序由智业提供。

服务器名称

服务器配置

网络配置

Ip+账户

映射外网ip

物理机1(API备用)

CPU:8核+ 2*4

内存:64G+

磁盘:500G+ (/ 406G, /dev 32G, /run/shm 32G)

操作系统:linux  centos 7(厂商提供)

1、连接互联网:>=100M(只允许服务器访问互联网,不允许互联网访问服务器)

2、访问云端集群各服务器



物理机2(API备用)

CPU:8核+ 2*4

内存:64G+

磁盘:500G+ (/ 406G, /dev 32G, /run/shm 32G)

操作系统:linux  centos 7(厂商提供)

1、连接互联网:>=100M(只允许服务器访问互联网,不允许互联网访问服务器)

2、访问云端集群各服务器

3、访问院内APP前置服务器


H5 nodejs Web服务器

CPU:4核+

内存:32G+

磁盘:300G+(/ 50G, /home 234G, /dev 16G, /dev/shm 16G, /run 16G, /sys/fs/cgroup 16G, /run/user/0 3.2G)

操作系统:linux  centos 7(厂商提供)

1、连接互联网带宽:>=100M 独享(对外服务,app访问路口,固定ip)
2、访问云端集群各服务器


总线微服务API服务器

CPU:4核+ 2*2

内存:32G+

磁盘:300G+(/ 50G, /home 234G, /dev 16G, /dev/shm 16G, /run 16G, /sys/fs/cgroup 16G, /run/user/0 3.2G)

 

操作系统:linux  centos 7(厂商提供)

1、连接互联网:>=100M(只允许服务器访问互联网,不允许互联网访问服务器)

2、访问云端集群各服务器


虚拟机3(Mysql服务器)

CPU:4核+ 2*2

内存:32G+

磁盘:300G+ (/ 50G, /home 234G, /dev 16G, /dev/shm 16G, /run 16G, /sys/fs/cgroup 16G, /run/user/0 3.2G)

操作系统:linux  centos 7(厂商提供)

1、连接互联网:>=100M(只允许服务器访问互联网,不允许互联网访问服务器)

2、访问云端集群各服务器

需要开通mysql远程登入账号

grant all on *.*  to   '用户名'@'%'   identified   by   '  ';


虚拟机4(Mongodb服务器)

CPU:4核+  2*2

内存:32G+

磁盘:300G+ (/ 50G, /home 234G, /dev 16G, /dev/shm 16G, /run 16G, /sys/fs/cgroup 16G, /run/user/0 3.2G)

 

操作系统:linux  centos 7(厂商提供)

1、连接互联网:>=100M(只允许服务器访问互联网,不允许互联网访问服务器)

2、访问云端集群各服务器

需要设置mongodb远程登入权限

(详情见文档)

虚拟机5(资源服务器)

CPU:4核+  2*2

内存:32G+

磁盘:300G+ (/ 50G, /home 234G, /dev 16G, /dev/shm 16G, /run 16G, /sys/fs/cgroup 16G, /run/user/0 3.2G)

操作系统:linux  centos 7(厂商提供)

1、连接互联网:>=100M(只允许服务器访问互联网,不允许互联网访问服务器)

2、访问云端集群各服务器


虚拟机6(nginx服务器)

CPU:4核+  2*2

内存:32G+

磁盘:300G+ (/ 50G, /home 234G, /dev 16G, /dev/shm 16G, /run 16G, /sys/fs/cgroup 16G, /run/user/0 3.2G)

操作系统:linux  centos 7(厂商提供)

1、连接互联网:>=100M(只允许服务器访问互联网,不允许互联网访问服务器)

2、访问云端集群各服务器

3、开放端口80和443

需要公网IP

 


具体安装步骤参考文档:

nginx安装部署(http://11601346.blog.51cto.com/11591346/1905659)

node.js安装部署(http://11601346.blog.51cto.com/11591346/1851621)

tomcat安装部署(http://11601346.blog.51cto.com/11591346/1908077)

mysql安装部署(http://11601346.blog.51cto.com/11591346/1908064)

mongodb安装部署(http://11601346.blog.51cto.com/11591346/1892046) 




在安装中,只有nginx这台主机有公网IP,其他的服务器都是内网IP。需要配置iptables做转发,内网的服务器才能访问外网(在安装应用的时候使用yum安装,需要连通外网)。具体设置步骤如下:


修改nginx服务器/etc/sysctl.conf 配置文件,加入 net.ipv4.ip_forward = 1 节点,开启ip转发功能设置iptablesiptables -t nat -I POSTROUTING -s 10.10.10.0/24 -j SNAT --to-source 10.10.10.77)其中10.10.10.0是内网服务器的IP网段,10.10.10.77是nginx在内网中的IP地址。并暂时关闭firewalld服务,在其他内网服务器上将默认网关指向10.100.10.18重启network,即可访问外网。