1. 程式人生 > >keepalived+mycat+mysql框架搭建

keepalived+mycat+mysql框架搭建

介紹

Keepalived: v1.2.13

Linux:centos x64 6.8版本

Mycat:1.5.1版本

Mysql:5.6.21版本

nc: 1.84-24

ipvsadm: 1.26-4

jdk:1.7

架構介紹:

四臺主機:

Master:192.168.118.128

Slave:192.168.118.129

DBMaster:192.168.118.130

DBSlave:192.168.118.131

虛擬ip:192.168.118.16

埠:8066

流程圖:

1. Mysql安裝

問題1:tar.gz包解壓後,進入解壓後的檔案,執行./scripts/mysql_install_db  --user=mysql

。提示bash:scripts/mysql_install_db: /usr/bin/perl: bad interpreter: No such file ordirectory?

解決方案:貌似提示註釋器錯誤,沒有/usr/bin/perl檔案或者檔案,解決辦法(安裝perl跟perl-devel即可):

執行  yum-y install perl perl-devel

後在執行./scripts/mysql_install_db  --user=mysql初始化資料庫即可。

安裝Mysql:

檢視下是否有系統自帶mysql的rpm包,如果有,需要刪除自帶的舊rpm包。

[[email protected]

~]#rpm -qa | grep mysql

mysql-libs-5.1.71-1.el6.x86_64

[[email protected] ~]# yum-y remove mysql-libs-5.1*

[[email protected] ~]# rpm-qa | grep mysql

[[email protected] ~]#

在MySQL官網下載安裝MySQL-5.6.21所需的rpm軟體包。

需要下載三個rpm軟體包:

MySQL-client-5.6.21-1.rhel5.x86_64.rpm 

MySQL-devel-5.6.21-1.rhel5.x86_64.rpm 

MySQL-server-5.6.21-1.rhel5.x86_64.rpm

[[email protected] ~]

wgethttp://dev.mysql.com/Downloads/MySQL-5.6/MySQL-server-5.6.21-1.rhel5.x86_64.rpm

wgethttp://dev.mysql.com/Downloads/MySQL-5.6/MySQL-devel-5.6.21-1.rhel5.x86_64.rpm

rpm -ivhMySQL-server-5.6.21-1.rhel5.x86_64.rpm 

rpm -ivhMySQL-server-5.6.21-1.rhel5.x86_64.rpm 
rpm -ivhMySQL-client-5.6.21-1.rhel5.x86_64.rpm  

修改配置檔案位置。
[[email protected] tools]#
cp /usr/share/mysql/my-default.cnf /etc/my.cnf

初始化MySQL及修改MySQL預設的root密碼。
[[email protected] tools]#
/usr/bin/mysql_install_db
[[email protected] tools]#
ps -ef | grep mysql 

執行完之後啟動 mysql:

Service mysqlstart;

查詢root密碼登陸:

more/root/.mysql_secret 

# Therandom password set for the root user at Thu Apr  9 14:43:59 2015 (localtime): F6K3v_xggFoLQeiN

 [[email protected] tools]# mysql -uroot -pF6K3v_xggFoLQeiN Warning: Using a password on the command lineinterface can be insecure. 
Welcome to the MySQL monitor.  Commandsend with ; or \g. 

修改root密碼;

mysql> usemysql;

mysql> UPDATEuser SET Password = PASSWORD(“******”) WHERE user = 'root';

2. Mysql主從複製

在mysql主從兩臺機器上開啟vi /etc/my.cnf檔案,在mysqld下加一行:

lower_case_table_names =1

2.1 mysql master

Myql主從複製的搭建:

兩臺機器192.168.18.130(master) 192.168.118.31(slave)

先從master開始:

1.      開啟/etc/my.cnf檔案(mysql啟動預設是從/etc/my.cnf讀取的,所以你別的地方有配置檔案的話建議直接移到/etc目錄下)

2.      在[mysqld]下加入配置:

## replication 

server_id=6 

binlog-ignore-db=mysql 

log-bin=master-mysql-bin 

binlog_cache_size=1M 

binlog_format=mixed 

expire_logs_days=7 

slave_skip_errors=1062 

(serverid 全域性唯一的

binlog-ignore-db=mysql複製過濾,我們不同步mysql系統自帶的資料庫

log-bin=master-mysql-bin開啟logbin功能並設定logbin檔案的名稱

binlog_format=mixed 混合型複製模式,預設採用基於語句的複製,一旦發現基於語句的無法精確的複製時,就會採用基於行的複製。

接下來重啟mysql服務並用客戶端登入)

3.      Slave想要同步master上的資料首先肯定需要許可權,所以我們要在master上開通許可權。

grant replication slave, replication client on *.* to'root'@'192.168.118.131' identified by  ‘密碼’;(不知道這句有沒有用,我自己是開啟了任何ip都可以連結master的許可權,不建議在伺服器上這樣做)

或者自己開啟slave伺服器連結master伺服器的許可權

重新整理授權資訊,檢視master狀態:

Flush privileges;

Show master status;

-------------------------+----------+--------------+------------------+-------------------+

| File                    | Position | Binlog_Do_DB |Binlog_Ignore_DB | Executed_Gtid_Set |

+-------------------------+----------+--------------+------------------+-------------------+

| master-mysql-bin.000001 |     1160 |              | mysql            |       

4.      在master上建立一個數據庫,

我這裡直接用的test庫,

在庫裡建立一張表user,

Create table user(

User_id int(10) primary keyauto_increment,

User_name varchar(10)

);

隨便插入幾條資料。

接下來我們把test這個庫的資料全部備份下來,

首先我們要鎖表,

Flush tables with read lock;

接下來用mysql的備份命令進行備份,(不知道這一步可不可以省略,沒試過)

Mysqldump –p3306 –uroot –p –add-drop-tabletest > /tmp/edu-master.sql

然後把sql檔案用xftp傳送到slave伺服器上

2.2 mysql slave

5.      Slave的配置:

開啟配置檔案/etc/my.cnf

在[mysqld]下加入:

## replication 

server_id=5 

binlog-ignore-db=mysql 

log-bin=mysql-slave-bin 

binlog_cache_size = 1M 

binlog_format=mixed 

expire_logs_days=7 

slave_skip_errors=1062 

relay_log=mysql-relay-bin 

log_slave_updates=1 

read_only=1 

然後重啟mysql:

Service mysql restart

然後建立一下資料庫,因為備份下來的資料檔案裡面是不包含建立資料庫命令的,所以要手動建立一下,(這裡我用的是test資料庫,所以不用自己建立,如果在master上是自己建立的資料庫,這裡需要在slave上在建立一次,省略)

把從master哪裡備份過來的sql檔案恢復到slave中

mysql –uroot –p test < /tmp/edu-master.sql

6.      登陸slave資料庫

在mysql中輸入命令連結master:

change master tomaster_host='192.168.118.130',master_user='root',master_password=”******”,master_port=3306,master_log_file='master-mysql-bin.000001',master_log_pos=1160,master_connect_retry=30;

change

master  to

master_host='192.168.118.130'    #master主機的ip地址

 master_user='root',

master_password=’******’,

我們剛剛在master有執行過授權的賬號密碼就是這個

master_port=3306,master資料庫的埠號

 master_log_file= ‘master-mysql-bin.000001',  #show master status 看到的

master_log_pos=1160,   #這個是我們通過show masterstatus看到的position

master_connect_retry=30;

使用命令檢視slave狀態,可以看到slave目前還未開始同步

show slave status\G;

 

執行strat slave 開始主從同步,看到兩個Yes就代表成功了。

 

在master機器上檢視狀態,可以看見slave的連結資訊。

Showprocesslist\G

最後可以測試一下,在master中插入資料,去slave檢視資料是否已經插入。

3. Java安裝

安裝1.7版本java

rpm -ivhjdk-7u80-linux-x64.rpm

安裝完成後java –version檢視版本,是否安裝成功。反正我安裝成功了。

OpenJDK Runtime Environment(rhel-2.6.10.1.el6_9-x86_64 u141-b02)

OpenJDK 64-Bit Server VM (build 24.141-b02,mixed mode)

4. Mycat安裝配置讀寫分離

 

將mycat的安裝包解壓到/usr/local目錄下,

cd /usr/local/mycat

ll

設定Mycat的環境變數

Vi /etc/profile

加入兩行;

export MYCAT_HOME=/usr/local/mycat

export PATH=$PATH:$MYCAT_HOME/bin

使配置檔案立即生效,

source /etc/profile

進入mycat配置檔案目錄:

cd /usr/local/mycat/conf/

vi schema.xml 

這個配置檔案主要是用來配置資料庫節點,邏輯表等等東西的:

<?xml version="1.0"?>

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schemaxmlns:mycat="http://org.opencloudb/"> 

    <!-- 定義MyCat的邏輯庫 --> 

    <schema name="mycat_schema"checkSQLschema="false" sqlMaxLimit="100"dataNode="testNode"></schema> 

    <!-- 定義MyCat的資料節點 --> 

    <dataNodename="testNode" dataHost="dtHost" database="test"/> 

    <!-- 定義資料主機dtHost,連線到MySQL讀寫分離叢集 ,schema中的每一個dataHost中的host屬性值必須唯一--> 

    <!-- dataHost實際上配置就是後臺的資料庫叢集,一個datahost代表一個數據庫叢集 --> 

    <!--balance="1",全部的readHoststand by writeHost參與select語句的負載均衡--> 

    <!--writeType="0",所有寫操作傳送到配置的第一個writeHost,這裡就是我們的hostmaster,第一個掛了切到還生存的第二個writeHost--> 

    <dataHost name="dtHost"maxCon="500" minCon="20" balance="1" 

       writeType="0" dbType="mysql"dbDriver="native" switchType="2"slaveThreshold="100"> 

        <!--心跳檢測 --> 

       <heartbeat>show slave status</heartbeat> 

        <!--配置後臺資料庫的IP地址和埠號,還有賬號密碼 --> 

        <writeHosthost="hostMaster" url="192.168.118.130:3306"user="root" password="******" > 

        <readHosthost="hostSlave" url="192.168.118.131:3306"user="root" password="******" />

      </writeHost> 

        <writeHosthost="hostM2" url="192.168.118.131:3306"user="root" password="******" />

   </dataHost> 

</mycat:schema> 

接下來配置server.xml檔案:

vi server.xml

如下:

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE mycat:server SYSTEM "server.dtd">

<mycat:serverxmlns:mycat="http://org.opencloudb/">

         <system>

         <propertyname="defaultSqlParser">druidparser</property>

         </system>

         <username="root">

                   <propertyname="password">******</property>

                   <propertyname="schemas">mycat_schema</property>

         </user>

</mycat:server>

關閉防火牆:

Service iptables stop

開啟Mycat:

Mycat start

用navicat連線Mycat進行查詢和新增,mycat預設埠是8066,

檢視Mycat.log日誌,檢視路由是否正確.

注意:mycat.log日誌預設是info級別,要在mycat/conf/log4j.xml中修改日誌級別為debug之後再看。

5. Web伺服器上realserver指令碼

在web伺服器上/etc/init.d下新建realserver指令碼(兩個都要)。內容如下:

SNS_VIP=192.168.118.16   #虛擬ip(叢集虛擬ip要相同)

/etc/rc.d/init.d/functions

case "$1" in

start)

       ifconfig lo:0 $SNS_VIP netmask255.255.255.255 broadcast $SNS_VIP

       /sbin/route add -host $SNS_VIP dev lo:0

       echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore

       echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce

       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

       echo "2">/proc/sys/net/ipv4/conf/all/arp_announce

       sysctl -p >/dev/null 2>&1

       echo "RealServer Start OK"

       ;;

stop)

       ifconfig lo:0 down

       route del $SNS_VIP >/dev/null2>&1

       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

       echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce

       echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore

       echo "0">/proc/sys/net/ipv4/conf/all/arp_announce

       echo "RealServer Stoped"

       ;;

*)

       echo "Usage: $0 {start|stop}"

       exit 1

esac

exit 0

然後service realserver start啟動realserver

如果報許可權不夠,則賦予realserver相應許可權:chmod 755 /etc/init.d/realserver

如果訪問function被拒絕,則賦予functions相應許可權:chmod 755 /etc/rc.d/init.d/functions

6. Keepalived安裝配置

keepalived+ipvsadm不是裝在mycat+mysql伺服器上,準備一個新的伺服器,單獨放keepalived+ipvsadm

安裝keepalived之前首先安裝nc外掛。用來對Mycat的8066埠做心跳檢測。

直接用rpm -ivh nc-1.84-24.el6.x86_64.rpm安裝就可以用。

安裝keepalived:(主從負載均衡伺服器都要配置)

rpm -ivhkeepalived-1.2.13-5.el6_6.x86_64.rpm

配置keepalived.conf:

1.  global_defs {  

2.    notification_email {  

3.       [email protected]  

4.    }  

5.     notification_email_from [email protected]  

6.    smtp_server localhost  

7.     smtp_connect_timeout 30  

8.    router_id  NodeA  

9.  }   

預設的配置檔案中,使用第三方smtp伺服器,但這在現實中幾乎沒有意義(需要驗證的原因),我們將其指定為localhost, 將通知資訊的傳送交給本地sendmail服務處理。查閱說明文件得知route_id配置是為了標識當前節點,我將其設定為NodeA。

1.  vrrp_instance VI_1 {  

2.     state MASTER   #指定A節點為主節點 備用節點上設定為BACKUP即可  

3.      interface eth0   #繫結虛擬IP的網路介面  

4.     virtual_router_id 51  #VRRP組名,兩個節點的設定必須一樣,以指明各個節點屬於同一VRRP組  

5.      priority 100   #主節點的優先順序(1-254之間),備用節點必須比主節點優先順序低  

6.     advert_int 1   #組播資訊傳送間隔,兩個節點設定必須一樣  

7.      authentication {   #設定驗證資訊,兩個節點必須一致  

8.         auth_type PASS  

9.          auth_pass 1111  

10.    }  

11.     virtual_ipaddress {   #指定虛擬IP, 兩個節點設定必須一樣。 

12.         192.168.118.16   #測試過程中發現,該虛擬ip只有和真實ip在同一網段,才好用

13.                            #不知道是不是跟我的虛擬機器用的nat模式聯網有關。

14.                           #測試主機A節點ip為192.168.118.128

15.     }  

16.}   

按同樣的方法配置節點B並修改配置檔案,可將A節點的配置檔案複製到B節點,並修改以下幾項: 
router_id  NodeB

state   BACKUP

priority   90

執行命令 ip a (注意ifconfig命令無法檢視到配置的虛擬IP),可以看到節點A已經綁定了192.168.118.16的ip,此時,關閉A的keepalived,在節點B上上執行ip a就發現虛擬IP已經繫結到節點B上,再開啟A的keepalived,虛擬IP又繫結回節點A之上。 

Keepalived.conf完整配置如下:(兩個負載均衡伺服器都要配置)

! ConfigurationFile for keepalived

global_defs {

   notification_email{

    [email protected]

   }

  notification_email_from [email protected]

  smtp_server localhost

  smtp_connect_timeout 30

  router_id NodeA

}

vrrp_instance VI_1 {

   state MASTER

   interface eth0

   virtual_router_id 51

   priority 100

   advert_int 1

   authentication {

       auth_type PASS

       auth_pass 1111

    }

   virtual_ipaddress {

       192.168.118.16

    }

}

virtual_server 192.168.118.168066 {  #虛擬ip

    delay_loop 6

    lb_algo rr

    lb_kind DR

   nat_mask 255.255.255.0

persistence_timeout0   #會話保持時間,x s之內使用者無相應則下一次使用者請求時重新

                     #路由

   protocol TCP

    real_server 192.168.118.130 8066 {   #真實伺服器1

        weight 1

        MISC_CHECK {

        misc_path"/etc/keepalived/check_mycat_status.sh 192.168.118.130 8066"

        misc_timeout 3

        }  

}

    real_server 192.168.118.131 8066 {   #真實伺服器2

        weight 1

        MISC_CHECK {

        misc_path"/etc/keepalived/check_mycat_status.sh 192.168.118.131 8066"

        misc_timeout 3

        }

    }

}

說明:因為用tcp_check健康檢測後面的mycat會報錯,所以這裡用misc_check的方式做心跳檢測,misc_path引號中內容分別是:自定義心跳檢測shell指令碼的路徑、檢測的伺服器ip、檢測的埠。(引號必須要)

Misc_timeout是指令碼執行超時時間。

Misc自定義指令碼如下:(執行下列指令碼必須要安裝nc外掛)

建立指令碼:

vi check_mycat_status.sh

指令碼內容:

#!/bin/bash

result=`nc -v -z $1 $2`

flag="succeeded"

if [[ $result =~ $flag ]]

then

         exit 0

else;

         exit 1

fi

給該指令碼賦予執行許可權:

Chmod 755 check_mycat_status.sh

7. Ipvsadm安裝配置

Ipvsadm安裝:(兩個負載均衡伺服器都要配置)

rpm -ivhipvsadm-1.26-4.el6.x86_64.rpm檢查安裝是否成功:

Ipvsadm –help

用ipvsadm –L檢視Keepalived路由資訊。

8. 整個流程測試

用navicat連結虛擬ip 192.168.118.16 埠號8066,使用者名稱root,密碼******,

通過Keepalived伺服器轉發到兩臺資料庫伺服器的Mycat上,ip地址為192.168.118.130和192.168.118.131,埠號為8066。連上mycat伺服器後,通過mycat對master資料庫進行寫,對slave資料庫進行讀操作。Master的資料會更新到slave資料庫。

Mysql的安裝的主從複製的配置,

雙點Mycat讀寫分離的安裝配置

分流伺服器主從Keepalived+ipvsadm的安裝、配置和資料庫伺服器realserver指令碼的編寫

相關推薦

keepalived+mycat+mysql框架搭建

介紹 Keepalived: v1.2.13 Linux:centos x64 6.8版本 Mycat:1.5.1版本 Mysql:5.6.21版本 nc: 1.84-24 ipvsadm: 1.26-4 jdk:1.7 架構介紹: 四臺主機: Master:192.16

haproxy+keepalived+mycat+mysql (讀寫分離)

haproxy+keepalived+m描述:架構方案: mysql (master/slave) --gtid 方式主備(pos 也可)mycat (master/slave) --xinted 插件時間主備模式haproxy (master/slave) --keepalived 自動切換--keepal

Spring + Spring MVC + MyBatis + Velocity + MySQL 框架搭建

     最近因為公司業務需要,初步學習了SSM並根據網上的教程自己搭建了一個基礎的web,實現從前端Velocity頁面對資料庫進行CRUD基本操作。 特別提醒:我的整個原始碼以及JAR包已經打包上傳到CSDN,歡迎下載! 下載連結:http://download.c

Mybatis 系列(1)—— JSP + Spring + Mybatis+Mysql 框架搭建

  小編也是忙裡偷閒的學會java,用吃飯和睡覺前的時間看完了一個Mybatis的介紹,手癢癢的就練了練,學習的時間也不長,兩天時間搭了一個框架,分享給大家。   MyBatis 是支援普通 SQL查詢,儲存過程和高階對映的優秀持久層框架。MyBatis 消除了幾乎所有的

Spring+Mybatis+SpringMVC+Maven+MySql(SSM框架)搭建例項

這篇文章我們來實現使用maven構建工具來搭建Spring+Mybatis+SpringMVC+MySql的框架搭建例項。工程下載 使用maven當然得配置有關環境了,不會配置的請看我前幾篇文章,都有配置maven環境的列子! MySQL建立表sql語句: /* Navicat M

IDEA多模組SSM框架搭建(IDEA+tomcat+maven+mysql+spring+spring mvc+mybatis)總結

Tomcat版本:8.5.27  jdk版本:1.8 Idea版本:2017.3.5 1.建立一個根模組 不勾選任何值,直接next      根模組建立成功如下: src目錄不需要可以刪除 2.建立javadao模組

Spring boot 框架搭建(maven + mybatis + jersey +mysql

一、建立一個maven專案 1.首先是建立一個Spring boot 的maven 專案,選擇maven-archetype-quickstart這個maven過濾器,建立一個maven專案。 2.建立後續的自己專案的根節點資訊,然後選擇finish。

基於.net core 2.0+mysql+AceAdmin搭建一套快速開發框架

前言 .net core已經出來一段時間了,相信大家對.net core的概念已經很清楚了,這裡就不再贅述。筆者目前也用.net core做過一些專案,並且將以前framework下的一些經驗移植到了.net core下,並結合.net core本身的一些特性整理成此框架,以供學習參考。如有不足之處,歡迎指

EF+MVC對映MySQL資料庫搭建程式框架總結

以前使用VS都是通過SQLServer資料庫對映,不過這個專案需求是MVC+EF+MySQL,在配置過程中出現了很多錯誤上網查看了很多資料,現在讓我來總結一下吧。 一:配置 因為VS和SqlServer都是微軟的親兒子所以在用VS對映SQLserver的時候很方便,但是對

[IDEA]::springboot框架搭建,整合mysql資料庫

1.完整工程目錄圖如下 2.開啟idea,左上角 file–>new–>project–>選擇spring Initializar,選擇 jdk ,然後next 3,出現下圖,繼續next,這裡可以修改你想要的檔名 4.只選中web,next 5.可以工程名,和工程存

實時分析Flume-Kafka框架搭建最終將資料在mysql中輸出

因為搭建框架比較複雜如果這其中有不足,歡迎提出指正。下面附上實時分析簡化框架圖幫助理解。 把離線分析框架也附上 實時分析搭建過程: 1.在命令提示符中(Windows+R)找到準備好的SocketTest.java路徑,javac SocketTest.java執行後生

使用RESTful Jersey框架搭建WebService,Hibernate框架訪問資料庫,MySQL儲存資料

package com.hnu.hibernate.resources; import java.util.List; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws

Maven+Spring+Spring MVC+MyBatis+MySQL搭建SSM框架環境

專案建設完成之後的結構:    資料庫的表結構如下: 環境建設:搭建Maven環境、Tomcat環境、需要MySQL 資料庫支援,使用的程式設計工具Eclipse (這些是前期準備); 開始建立工程: 1.

MyCAT+MySQL 搭建高可用企業級數據庫集群

調試 元素 eat linux 核心 適合 算法 用途 什麽 第1章 課程介紹課程介紹1-1 MyCAT導學 試看1-2 課程介紹 第2章 MyCAT入門這一章中,我們將回顧了垂直切分,水平切分,分庫分表等基礎概念,然後快速回如何安裝和啟動MyCAT的,介紹如何以打包好的可

Mycat+Mysql主從複製+haproxy+keepalived實現高可用的分庫分表叢集方案

一, 部署架構 1.1架構圖 1.2 軟體版本 作業系統: CentOS2-7-X86_64-DVD-1708.iso JDK 版本: jdk1.8.0_11 Keepalived 版本: keepalived-1.2.18.tar.gz

jeesite框架搭建maven專案 (mysql資料庫)

5. 技術選型1、後端* 核心框架:Spring Framework 4.0* 安全框架:Apache Shiro 1.2* 檢視框架:Spring MVC 4.0* 服務端驗證:Hibernate Validator 5.1* 佈局框架:SiteMesh 2.4* 工作流引擎:Activiti 5.15*

塗抹mysql筆記-搭建mysql高可用體系

argument 並且 ren enum 記錄 ica 操作系統 ner 一份 mysql的高可用體系<>追求更高穩定性的服務體系 可擴展性:橫向擴展(增加節點)、縱向擴展(增加節點的硬件配置) 高可用性<>Slave+LVS+Keepalived實

遊戲戰鬥數值框架搭建入門

們的 才會 game idt 讓我 cmm 數量 維度 標準 轉自:http://www.gameres.com/485798.html 設計一個遊戲DEMO的時候要幹的第一件事是什麽呢?是搭建數值框架,而如果是一個打打殺殺的遊戲,第一步要搭建的就是戰鬥數值的框架了。  

windows下php、mysql環境搭建

ins ads unity 5.7 文件 all color 註意 ont php http://windows.php.net/download/ mysql https://dev.mysql.com/downloads/windows/installer/5.7.ht

React框架搭建但頁面應用package.json基本包和依賴包

5.5 2.0 server 4.5 ack logs ostc style pac {  //依賴包 "devDependencies": {  //babel "babel-core": "6.24.1", "babel-loader": "7.0