With a decentral and global economy, distributed scheduling problems are getting a lot of attention. This paper addresses a distributed flexible job shop scheduling problem (DFJSP) with minimizing makespan, in which three subproblems, namely operations sequencing, factory selection and machine selection must be determined. To solve the DFJSP, a novel mixed-integer linear programming (MILP) model is first developed, which can solve the small-scaled instances to optimality. Since the NP-hard characteristic of DFJSP, a hybrid algorithm (GA-VNS-CP) of genetic algorithm (GA), variable neighborhood search (VNS) and constraint programming (CP). Specifically, the GA-VNS-CP is divided into two stages. The first stage uses the hybrid meta-heuristic algorithms of GA and VNS (GA-VNS), and the VNS is designed to improve the local search ability of GA. In GA-VNS, the encoding only considers the factory selection and the operations sequencing problems, and the machine selection problem is determined by the decoding rule. Because the solution space may be limited by the decoding rule, the second stage uses the CP to extend the solution and further improve the solution. Numerical experiments based on benchmark instances are conducted to evaluate the effectiveness of the MILP model, VNS, CP and GA-VNS-CP. The experimental results show effectiveness of the MILP model, VNS and CP. Moreover, the GA-VNS-CP algorithm has better performance than traditional algorithms and improves 6 current best solutions for benchmark instances