分布式编译系统的搭建

Posted GreatSQL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式编译系统的搭建相关的知识,希望对你有一定的参考价值。

  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  • GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
  • 作者:dan
  • 文章来源:GreatSQL社区原创

由于MySQL 源码编译单机耗费的时间过于长,最近MySQL 变成8.0.27 以后编译时间明显更耗时了,并且办公室内有多余的空闲机器。

使用分布式编译,可以在不改变现有环境的情况下,提高编译效率。

目前比较常用的编译工具有2个 distccicecream , 本文使用distcc 进行部署。

部署distcc

分为两个部分一个是服务端,一个是客户端

程序分别是distccddistcc

服务端

也是我们空余的设备上

可以基于Docker部署镜像版本最好和客户端一致,编译器版本需求GCC 或者 Clang 一致

moyu22:/opt/distcc$ cat Dockerfile 
FROM ubuntu:20.04

RUN apt update && \\
apt install  -y net-tools distcc gcc g++ clang-12 && \\
apt clean && \\
echo "#!/bin/bash \\n distccd --daemon --no-detach --no-detach --user nobody --allow 0.0.0.0/0 --log-stderr --stats \\$OPT" > ./entrypoint.sh && \\
chmod +x ./entrypoint.sh

# Run the generated shell script.
ENTRYPOINT ["./entrypoint.sh"]

打包一个distccd 的镜像

docker build -f Dockerfile -t distcc .

Docker启动

docker run -t -d -net=host distccd 

也可以使用docker-compose.yml启动

version: \'3\'

services:
    distcc:
      image: "chestnutsj/distcc:latest"
      hostname: distcc
      container_name: distcc
      privileged: true
      ports:
        - 3632:3632
        - 3633:3633
docker-compose -f docker-compoe.yml  up -d 

默认情况下,将运行所有人都可以运行访问,如果有需要认证可以在环境变量 OPT 中添加,或者修改默认的端口

客户端

配置

本地环境 20.04 (),需要编译项目的机器上,安装distcc

moyu20: apt install -y distcc

在配置中添加服务器下的 /etc/distcc/hosts ,也可以在 $HOME/.distcc/hosts , 域名可以按照服务器优先级添加

hostname[/LIMIT]
192.168.1.102/32

默认的limit 数量是 4 如果需要更高的效率可以使用更高的数值用

root@dev:/# distcc -j
48
默认limit为 hostname * 4

单个文件可以使用

distcc g++ t1.cpp

以MySQL源码为例

cmake mysql_source \\
-DBUILD_TESTING=OFF -DUSE_GTAGS=OFF -DUSE_CTAGS=OFF \\
-DCMAKE_BUILD_TYPE=RelWithDebInfo \\
-DFEATURE_SET=community \\
-DWITH_INNODB_MEMCACHED=ON -DWITH_ZLIB=bundled -DWITH_LIBEVENT=bundled -DWITH_ZSTD=bundled \\
-DENABLE_DOWNLOADS=ON \\
-DDOWNLOAD_BOOST=1 \\
..

添加指定的编译

 -DCMAKE_C_COMPILER_LAUNCHER=distcc
 -DCMAKE_CXX_COMPILER_LAUNCHER=distcc

编译项目

make -j 32 

可以明显降低编译时间

监控

编译期间可以查看distcc 使用情况

distccmon-text 1 间隔时间 1 秒

Enjoy GreatSQL

Net分布式系统之二:CentOS系统搭建Nginx负载均衡

一、关于CentOS系统介绍

  CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。基于Red Hat持续升级,和对已知BUG修复,所以CentOS更多用于搭建大型企业级服务器。目前较新版本为7.0,本文使用CentOS7 64bit进行搭建系统负载均衡。

 


 

二、安装VMWare

  VMWare (Virtual Machine ware)是一个“虚拟PC”软件公司.它的产品可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。本文使用VMWare WorkStation12安装CentOS操作系统。详细安装步骤参考:查看, 百度软件下载点击

 


 

三、安装CentOS系统

  首先需要下载CentOS安装包,下载IOS格式,本文使用CentOS7 64bit 版本,下载

  详细安装步骤请点击查看

  注意事项:

  1、分区的时候,选择EXT4格式,boot分区为400m,/分区为8G,/home分区为7G,var分区为6G,swap分区为2G

  2、用户和组ID,都设为 1000

  3、安装完成重启后提示License的,输入:1、2、r、yes 完成进入成功进入系统

  4、ctrl+alt 鼠标切回本机电脑,不在虚拟机里

 


 

四、安装Nginx和配置

  1、Nginx介绍

  Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的工程师Igor Sysoev研发,供俄国大型的入口网站Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

 

  2、安装部署  

  在CentOS7通过命令行安装Nginx服务器。

  (1)添加Nginx仓储,添加 epel repository

sudo yum install epel-release

  (2)检查是否已安装过nginx 

find -name nginx

  (3)如果有安装则删除

yum remove nginx

  (4)安装nginx

sudo yum install nginx

  (5)启动nginx

sudo systemctl start nginx
sudo systemctl enable nginx #可用

  (6)将nginx 设置为启动系统自动启动nginx

echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local

  (7)查看本机IP,为了后续配置nginx.conf所用

ifconfig

  (8)修改nginx.conf配置文件

cd /etc/nginx/ #定位到nginx安装目录
vim nginx.conf #通过vim打开nginx.conf配置文件进行配置

  (9)主要配置节点,192.168.119.1:8081 和 192.168.119.1:8082 分别部署在 IIS7的两个ASP.NET MVC 开发的站点(在另一台电脑),设计软件架构解决方案后续介绍。

upstream 192.168.119.128{
    server 192.168.119.1:8081;
    server 192.168.119.1:8082;
}


server{
    listen   80;
    server_name  192.168.119.128;
    location /{
        proxy_pass   http://192.168.119.128;
    }
    
}

  (10)重启nginx服务

service nginx restart

以上记录在CentOS7操作系统搭建Nginx负载均衡解决方案记录。后续简介通过Keepalived搭建Nginx负载高可用解决方案。

 

作者:andon
出处:http://www.cnblogs.com/Andon_liu
关于作者:专注于微软平台项目架构、管理。熟悉设计模式、领域驱动、架构设计、敏捷开发和项目管理。现主要从事ASP.NET MVC、WCF/Web API、SOA、MSSQL、redis方面的项目开发、架构、管理工作。 如有问题或建议,请一起学习讨论!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
如有问题,可以邮件:568773262@qq.com 联系我,谢谢。

 

以上是关于分布式编译系统的搭建的主要内容,如果未能解决你的问题,请参考以下文章

git安装搭建

搭建GIT服务器

大数据技术训练舱:Redis的分布式实践(上)从零开始编译安装配置Redis6,规范化搭建Java工程测试

jenkins-slave的搭建和使用

docker搭建fastdfs环境

以太坊 DApp 开发入门实战! 用Node.js和truffle框架搭建——区块链投票系统!